Przejdź do treści

SQL injection — co to jest, jak działa i jak się chronić? Przykład w PHP i Pythonie

PawełInstruktor Cyberium Opublikowano 12 min czytania Poziom: Początkujący
Spis treści
  1. Co to jest SQL injection?
  2. Jak działa atak SQL injection?
  3. SQL injection — przykład podatnego kodu i jego poprawki
  4. Jakie są rodzaje SQL injection?
  5. Jakie są skutki ataku SQLi?
  6. Czy wstrzyknięcie SQL to nadal problem w 2026 roku?
  7. Jak się chronić przed SQL injection? Zasady OWASP
  8. Jak legalnie sprawdzić, czy aplikacja jest podatna?
  9. Gdzie nauczyć się SQLi w praktyce?
  10. Najczęstsze pytania (FAQ)
  11. Podsumowanie

W skrócie

SQL injection to podatność, w której tekst wpisany przez użytkownika staje się częścią zapytania do bazy danych i zmienia jego sens. Skutek: wyciek danych, ominięcie logowania, a czasem przejęcie serwera. W OWASP Top 10:2025 kategoria Injection jest na 5. miejscu, a w 2026 roku (do 9 października) CISA dodała do katalogu KEV 8 podatności tego typu. Skuteczna ochrona to zapytania parametryzowane — poniżej przykład podatnego i poprawionego kodu w PHP i Pythonie, rodzaje SQLi i zasady OWASP.

Co to jest SQL injection?

SQL injection (SQLi, po polsku: wstrzyknięcie SQL) to podatność aplikacji, w której dane od użytkownika zostają wklejone do zapytania SQL i baza danych wykonuje je jak fragment polecenia, a nie jak zwykłą wartość.

SQL to język, w którym aplikacje rozmawiają z bazami danych (MySQL, PostgreSQL, SQLite) — używa go sklep pytający o produkty, formularz logowania i panel z listą zamówień.

W katalogu słabości CWE ma ona numer CWE-89, a źródło problemu jest zawsze to samo: pomieszanie kodu (polecenia SQL) z danymi (tym, co wpisał użytkownik).

Jak działa atak SQL injection?

Atak SQL injection działa, bo aplikacja skleja stały tekst zapytania z danymi od użytkownika, a baza nie odróżnia, co pochodzi od programisty, a co od gościa strony.

  1. Użytkownik wysyła dane — fraza w wyszukiwarce, login, parametr w adresie URL.
  2. Aplikacja skleja zapytanie — wkleja dane w tekst zapytania SQL.
  3. Dane zmieniają strukturę zapytania — znak apostrofu kończy wartość, a dalszy tekst staje się nowym warunkiem lub poleceniem.
  4. Baza wykonuje zmienione zapytanie — z uprawnieniami aplikacji, więc zwraca lub zmienia cudze dane.
Jak działa atak SQL injection — cztery kroki od pola formularza do bazy danych (opracowanie Cyberium na podstawie OWASP i PortSwigger, stan na 9.10.2026).

Jeśli w kroku 2 aplikacja przekaże dane osobno od polecenia (zapytanie parametryzowane), krok 3 nie zachodzi.

SQL injection — przykład podatnego kodu i jego poprawki

Poniższy przykład SQL injection pochodzi z typowego scenariusza laboratoryjnego: prosta wyszukiwarka produktów w aplikacji testowej, uruchomionej we własnym środowisku do ćwiczeń. Pokazujemy, dlaczego kod jest podatny i jak go naprawić — w PHP i w Pythonie.

Podatny kod w PHP — sklejanie zapytania

<?php
// PODATNE — dane od użytkownika wklejone w tekst zapytania
$nazwa = $_GET['nazwa'] ?? '';
$sql = "SELECT id, nazwa, cena FROM produkty WHERE nazwa = '$nazwa'";
$wynik = $pdo->query($sql);

Gdy użytkownik wpisze rower, baza dostanie zapytanie ... WHERE nazwa = 'rower' i wszystko działa. Problem pojawia się, gdy w polu znajdzie się apostrof. Klasyczny, podręcznikowy przykład to wartość ' OR '1'='1 — po wklejeniu zapytanie wygląda tak:

SELECT id, nazwa, cena FROM produkty WHERE nazwa = '' OR '1'='1'

Warunek '1'='1' jest zawsze prawdziwy, więc baza zwraca wszystkie wiersze tabeli, a nie tylko szukany produkt. Ten sam błąd w formularzu logowania może oznaczać wejście na cudze konto.

Poprawiony kod w PHP — PDO i zapytanie parametryzowane

<?php
$pdo = new PDO('mysql:host=localhost;dbname=sklep;charset=utf8mb4', $uzytkownik, $haslo, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false, // natywne zapytania przygotowane
]);

// BEZPIECZNIE — treść zapytania jest stała, dane idą osobno jako parametr
$stmt = $pdo->prepare('SELECT id, nazwa, cena FROM produkty WHERE nazwa = :nazwa');
$stmt->execute(['nazwa' => $_GET['nazwa'] ?? '']);
$produkty = $stmt->fetchAll(PDO::FETCH_ASSOC);

Zapytanie parametryzowane (prepared statement) ma w miejscu wartości znacznik — tu :nazwa. Struktura zapytania jest ustalona, zanim trafi do niej wartość: sterownik przekazuje ją osobno do bazy albo — w trybie emulacji, domyślnym w PDO dla MySQL — sam ją bezpiecznie wstawia. W obu przypadkach wartość nie jest interpretowana jako kod SQL. Dokumentacja PHP mówi wprost: parametrów nie trzeba ujmować w cudzysłowy, bo zajmuje się tym sterownik, a aplikacja, która używa wyłącznie zapytań przygotowanych, jest chroniona przed tym atakiem — pod warunkiem, że żadnej innej części zapytania nie buduje z niezabezpieczonych danych.

Ten sam przykład w Pythonie — sqlite3

import sqlite3

con = sqlite3.connect("sklep.db")
nazwa = input("Szukaj produktu: ")

# PODATNE — f-string wkleja dane w treść zapytania
cur = con.execute(f"SELECT id, nazwa, cena FROM produkty WHERE nazwa = '{nazwa}'")

# BEZPIECZNIE — znacznik ? i wartość przekazana osobno (krotka)
cur = con.execute("SELECT id, nazwa, cena FROM produkty WHERE nazwa = ?", (nazwa,))
print(cur.fetchall())

Dokumentacja Pythona 3.15 każe zamiast operacji na napisach używać znaczników ? lub nazwanych (:nazwa). Zasada jest ta sama w każdym języku: nigdy nie skleja się zapytania z danymi — dane przekazuje się osobno.

Czego nie da się sparametryzować? Sortowanie i nazwy kolumn

Znacznik parametru zastępuje tylko wartość. Nazwy tabel i kolumn czy kierunek sortowania (ORDER BY ... ASC/DESC) to część struktury zapytania — OWASP zauważa, że nazw tabel i kolumn nie da się escapować, a Cheat Sheet zaleca dla nich i dla kierunku sortowania listę dozwolonych wartości ustaloną w kodzie:

<?php
// Użytkownik wybiera klucz, a aplikacja podstawia własną, znaną wartość
$kolumny = ['nazwa' => 'nazwa', 'cena' => 'cena'];
$kolumna = is_string($_GET['sortuj'] ?? null) ? ($kolumny[$_GET['sortuj']] ?? 'nazwa') : 'nazwa';
$kierunek = (($_GET['kierunek'] ?? '') === 'malejaco') ? 'DESC' : 'ASC';

$stmt = $pdo->prepare(
    "SELECT id, nazwa, cena FROM produkty WHERE nazwa LIKE :fraza " .
    "ORDER BY $kolumna $kierunek"
);
$stmt->execute(['fraza' => '%' . ($_GET['q'] ?? '') . '%']);

Do zapytania nie trafia nic, czego programista wcześniej nie wpisał w kod — tekst od użytkownika służy tylko do wyboru z gotowej listy.

Jakie są rodzaje SQL injection?

Rodzaje SQLi dzieli się najczęściej według tego, jak atakujący dowiaduje się o wyniku zapytania: in-band (wynik widać w odpowiedzi aplikacji), blind (wynik trzeba wywnioskować) i out-of-band (wynik wychodzi innym kanałem).

Rodzaje SQL injection — podział i przykładowe techniki (stan na 9.10.2026; na podstawie PortSwigger Web Security Academy i OWASP).
RodzajTechnikiSkąd atakujący zna wynikCo chroni
In-band (w tym samym kanale)error-based (na podstawie błędów), UNION-based (dołączenie drugiego zapytania)dane lub komunikat błędu bazy widać bezpośrednio na stroniezapytania parametryzowane; ogólne komunikaty błędów zamiast szczegółów z bazy
Blind (ślepe, inferencyjne)boolean-based (prawda/fałsz), time-based (opóźnienie odpowiedzi)z różnic w odpowiedzi albo z czasu jej przyjścia — znak po znakuzapytania parametryzowane
Out-of-band (poza pasmem)wymuszenie połączenia sieciowego z bazy, np. zapytania DNSdane przychodzą osobnym kanałem, np. w zapytaniu DNS do serwera atakującegozapytania parametryzowane; ograniczenie ruchu wychodzącego z serwera bazy
Second-order (drugiego rzędu)dane zapisane w bazie, użyte później w innym zapytaniuzależnie od miejsca użycia — jak w trzech wierszach wyżejparametryzacja każdego zapytania, także z danymi „z własnej” bazy

In-band — wynik widać w odpowiedzi aplikacji

Najprostszy rodzaj: dane lub komunikat błędu bazy pojawiają się w tej samej odpowiedzi (warianty error-based i UNION-based, w którym operatorem UNION dokleja się drugie zapytanie).

Blind — ślepe wstrzyknięcie SQL

Aplikacja nie pokazuje wyników ani błędów, więc według PortSwigger atakujący wnioskuje z różnic w odpowiedzi (boolean-based) albo z jej opóźnienia (time-based) — wolniej, ale równie skutecznie.

Out-of-band — dane wychodzą innym kanałem

Zapytanie zmusza serwer bazy do połączenia sieciowego, najczęściej zapytania DNS, z serwerem atakującego. To rzadszy rodzaj, zależny od funkcji bazy i od tego, czy serwer może łączyć się z internetem.

Second-order — atak drugiego rzędu

Dane zapisane w bazie zostają później użyte w innym zapytaniu bez parametryzacji — dlatego dane z własnej bazy też traktuj jak niezaufane.

Jakie są skutki ataku SQLi?

Skutkiem udanego ataku SQLi jest najczęściej nieuprawniony dostęp do danych, a w gorszych przypadkach ich zmiana i przejęcie aplikacji lub serwera.

  • Wyciek danych — odczyt tabel z danymi klientów, skrótów haseł, tokenów i kluczy API.
  • Ominięcie logowania — zmiana warunku w zapytaniu sprawdzającym login i hasło.
  • Zmiana lub usunięcie danych — np. podmiana cen, uprawnień, numerów kont.
  • Eskalacja uprawnień i wykonanie kodu — CISA w katalogu KEV opisuje podatność SQLi w Drupalu (CVE-2026-9082) jako taką, która może prowadzić do podniesienia uprawnień i zdalnego wykonania kodu.

Skala skutków zależy od uprawnień konta, którym aplikacja łączy się z bazą — stąd zasada minimalnych uprawnień.

Czy wstrzyknięcie SQL to nadal problem w 2026 roku?

Tak — to jedna z najstarszych podatności aplikacji webowych, a wciąż trafia do katalogów aktywnie wykorzystywanych luk.

Miejsce SQL injection w OWASP Top 10:2025

W OWASP Top 10:2025 wstrzyknięcie SQL należy do kategorii A05:2025 Injection, która spadła z 3. na 5. miejsce. OWASP opisuje SQLi jako podatność o niskiej częstotliwości i dużym wpływie, z ponad 14 tys. CVE (publicznych identyfikatorów podatności). Całą listę 2025 z przykładami omawiamy w artykule OWASP Top 10 po polsku.

Przypadki z 2026 roku: CISA KEV i CERT Polska

Do katalogu KEV amerykańskiej agencji CISA (Known Exploited Vulnerabilities — podatności aktywnie wykorzystywane) w 2026 roku, według stanu na 9 października, dodano 8 podatności tego typu. Wybrane przykłady:

Wybrane podatności SQLi z 2026 roku (stan na 9.10.2026; źródła: CISA KEV, NVD, CERT Polska). CVSS — skala 0–10 oceny powagi luki.
OprogramowanieCVEDataCo się stało
LiteLLM (bramka do modeli AI)CVE-2026-42208KEV: 8.05.2026wartość klucza API wklejana w treść zapytania zamiast parametru; odczyt i możliwa zmiana bazy proxy bez logowania; CVSS 4.0: 9,3 (wg GitHub, CNA); NVD: 9,8 (CVSS 3.1)
Drupal CoreCVE-2026-9082KEV: 22.05.2026wstrzyknięcie SQL przez API abstrakcji bazy; możliwe podniesienie uprawnień i zdalne wykonanie kodu
WordPress CoreCVE-2026-60137KEV: 21.07.2026SQLi, gdy wtyczka lub motyw przekaże niezaufane dane; w połączeniu z CVE-2026-63030 zdalne wykonanie kodu bez logowania
Simple.ERP (system ERP firmy Simple SA)CVE-2026-1198CERT Polska: 26.02.2026SQLi w wyszukiwaniu okna „Obroty na kontach”, dla zalogowanego atakującego; CVSS 4.0: 8,6 (wg CERT Polska); poprawka w wersji [email protected]_u06

Najbardziej pouczający jest LiteLLM — bramka do wywoływania modeli językowych. Według opisu w NVD w wersjach od 1.81.16 do wersji przed 1.83.7 zapytanie sprawdzające klucz API „mieszało wartość klucza przekazaną przez wywołującego z tekstem zapytania, zamiast przekazać ją jako osobny parametr”. To błąd z naszego przykładu, tylko w narzędziu, które pilnuje kluczy do modeli AI: nowa warstwa technologii stoi na starych fundamentach i dziedziczy ich słabości. Więcej w artykule czy warto uczyć się cyberbezpieczeństwa w czasach AI.

Polski przykład to Simple.ERP: CERT Polska opublikował 26 lutego 2026 roku informację o podatności typu SQLi, której przyczyną był brak walidacji danych wejściowych. Ujawnienie koordynował CERT Polska w procesie CVD — tą drogą może zgłosić lukę każdy, kto trafi na nią w polskim oprogramowaniu.

Jak się chronić przed SQL injection? Zasady OWASP

Najskuteczniejsza ochrona przed SQLi to zapytania parametryzowane — tak zaczyna listę obron OWASP SQL Injection Prevention Cheat Sheet (stan na 9 października 2026).

Ochrona przed wstrzyknięciem SQL według OWASP SQL Injection Prevention Cheat Sheet (stan na 9.10.2026).
ZasadaRodzajCo robić w praktyce
1. Zapytania przygotowane z parametramiobrona podstawowaPDO prepare() + execute(), znaczniki ? w Pythonie; żadnego sklejania
2. Procedury składowane — bezpiecznieobrona podstawowadynamiczny SQL wewnątrz procedury też wymaga parametrów
3. Lista dozwolonych wartościobrona podstawowadla elementów, których nie da się sparametryzować (sortowanie, nazwy kolumn) — mapowanie wyboru użytkownika na wartości z kodu
4. Ręczne escapowaniezdecydowanie odradzanenie zastępuj nim parametrów — łatwo o błąd
Minimalne uprawnieniautwardzenieosobne konto bazy dla każdej aplikacji, bez praw administratora; widoki (views) ograniczające dostęp do kolumn
Wykrywaniekontrolaprzegląd kodu budującego zapytania (także w procedurach) i testy wg OWASP Web Security Testing Guide
  • ORM też pomaga — jeśli używasz go zgodnie z przeznaczeniem. OWASP Top 10:2025 jako preferowaną opcję wskazuje bezpieczne API — parametryzowany interfejs albo ORM (w praktyce np. Doctrine, Django ORM, SQLAlchemy). Surowe zapytania sklejane w ORM-ie są tak samo podatne.
  • Walidacja danych wejściowych to dodatek. OWASP pisze, że pozytywna walidacja po stronie serwera „nie jest pełną obroną” — sprawdzaj format, ale nie traktuj tego jako ochrony przed SQLi.
  • Minimalne uprawnienia ograniczają szkody, ale nie zapobiegają atakowi.
  • Komunikaty błędów dla użytkownika — ogólne. Szczegóły błędu bazy zapisuj w logach, a nie wyświetlaj na stronie, bo ułatwiają wariant error-based.

Jak legalnie sprawdzić, czy aplikacja jest podatna?

Aplikację pod kątem wstrzyknięcia SQL sprawdzasz legalnie tylko wtedy, gdy jest twoja albo masz pisemną zgodę właściciela na test w ustalonym zakresie. Trzy drogi:

  1. Przegląd własnego kodu — znajdź zapytania sklejane z tekstem (., f-stringi, +) i zamień je na parametry.
  2. Testy we własnym środowisku — kopia aplikacji na twoim komputerze, nie produkcja.
  3. Laboratoria do nauki — celowo podatne aplikacje stworzone do ćwiczeń.

Uwaga

Techniki i narzędzia do SQLi (w tym SQLmap) stosuj tylko w swoim laboratorium lub za zgodą właściciela systemu. Uzyskanie dostępu do cudzego systemu lub danych bez zgody jest w Polsce przestępstwem (art. 267 Kodeksu karnego). Jeśli przypadkiem trafisz na podatność, nie sprawdzaj jej dalej — zgłoś ją właścicielowi albo przez CERT Polska.

Gdzie nauczyć się SQLi w praktyce?

SQLi najlepiej zrozumieć, przechodząc atak w laboratorium, a potem naprawiając kod. Do wyboru masz kilka dróg, które można łączyć.

Gdzie ćwiczyć SQLi — porównanie dróg nauki (stan na 9.10.2026; fakty z oficjalnych stron platform i z programu Cyberium).
DrogaJęzykŚrodowiskoMocne stronyDla kogo / uwagi
PortSwigger Web Security Academyangielskilaboratoria onlinebezpłatna; kilkanaście laboratoriów z SQLi, od podstaw po blind i out-of-bandkolejność nauki i podstawy (Linux, HTTP, Burp) trzeba ułożyć samodzielnie
TryHackMe, Hack The Boxangielskimaszyny i pokoje w przeglądarce lub przez VPNszeroki wybór zadań; TryHackMe ma plan darmowy i płatny PremiumSQLi to jeden z wielu tematów; porównujemy je w artykule TryHackMe i Hack The Box
Własne laboratoriumdowolnymaszyna wirtualna z celowo podatną aplikacjąpełna kontrola, możesz też naprawiać kodkonfiguracja zajmuje czas na starcie
Cyberium (szkolenie 7)polskilaboratoria w przeglądarce, w CyberBoxie (Kali Linux), bez instalacjimoduł SQL Injection w ścieżce od podstaw, misje do portfolio, wsparcie ekspertadla osób, które chcą przejść po polsku całą ścieżkę testów penetracyjnych — od Linuksa po aplikacje webowe

Jak wygląda nauka SQLi w Cyberium?

W Cyberium — polskim kursie cyberbezpieczeństwa online — SQLi ma własny moduł w szkoleniu 7 „Atakowanie aplikacji webowych — Podstawy” (poziom „Średni”: 3 moduły, 26 lekcji, 15 laboratoriów praktycznych). Moduł „SQL Injection” obejmuje:

  • wprowadzenie do SQL i baz danych (MySQL),
  • różne techniki ataków — od technik Union po zaawansowane,
  • SQLmap — narzędzie automatyzujące wstrzyknięcia SQL — gdy już rozumiesz, co narzędzie robi za ciebie.

Umiejętności sprawdzasz w laboratoriach i w misjach projektowych #03 i #04 do portfolio i CV. Wcześniej w tym szkoleniu poznajesz Burp Suite, IDOR i ataki na formularze logowania. Pozostałe ataki typu injection czekają w szkoleniu 8 „Atakowanie aplikacji webowych — techniki zaawansowane”: XSS, Command Injection (wstrzykiwanie poleceń systemowych) oraz LFI i RFI.

Lekcję o SQLmap możesz obejrzeć przed zakupem: to jedna z dwóch bezpłatnych lekcji DEMO na stronie kursu. Prowadzący pokazuje w niej, jak szybko narzędzie dociera do bazy danych w laboratorium — i dlaczego trzeba nim posługiwać się ostrożnie, bo może nieodwracalnie uszkodzić bazę. Pokazuje też zasadę pracy pentestera: podatność najpierw znajduje się ręcznie, a w raporcie dla klienta wystarczy kilka rekordów jako dowód — bez zrzucania całej bazy.

Co jeszcze daje taka droga nauki:

  • Po polsku i w jednej kolejności — od pierwszego laboratorium i Linuksa (szkolenia 1–2), przez metodykę pentestów (szkolenie 3), do aplikacji webowych (szkolenia 7–8).
  • Praktyka przede wszystkim — w programie podział 80/20 między praktyką a teorią; łącznie 57 laboratoriów i 5 misji projektowych.
  • Laboratoria w przeglądarce — CyberBox, czyli Kali Linux w przeglądarce, bez instalacji.
  • Raport jak w pracy pentestera — w szkoleniu 6 tworzysz raport z pentestu krok po kroku, a jako bonus dostajesz szablon raportu gotowy do wykorzystania.
  • Wsparcie eksperta i aktualizacje przez cały dostęp.
  • Dostęp od razu po zakupie, subskrypcja z rezygnacją w każdej chwili.
  • Egzamin praktyczny C:CCE na końcu — test penetracyjny maszyny i raport; po zaliczeniu dostajesz certyfikat.

Na start przyda ci się plan z artykułu podstawy cyberbezpieczeństwa: jak zacząć w 30 dni, a szerszą ścieżkę rozpisaliśmy w planie nauki od podstaw w 8 krokach. Program wszystkich szkoleń znajdziesz w programie kursu cyberbezpieczeństwa.

Najczęstsze pytania (FAQ)

Co to jest SQL injection w prostych słowach?

SQL injection (SQLi, wstrzyknięcie SQL) to podatność, w której dane od użytkownika trafiają do zapytania do bazy jako jego część, a nie zwykła wartość. Atakujący może wtedy odczytać cudze dane, ominąć logowanie albo zmienić bazę. Najprostszy przykład: aplikacja wkleja tekst z pola wyszukiwarki do zapytania WHERE nazwa = '…'; wpisanie ' OR '1'='1 zmienia warunek na zawsze prawdziwy i baza zwraca wszystkie wiersze.

Jak najskuteczniej chronić się przed SQL injection?

Podstawą są zapytania parametryzowane (prepared statements): treść zapytania jest stała, a dane od użytkownika przekazujesz osobno jako parametry, np. przez PDO w PHP albo znaczniki ? w Pythonie. Nazwy kolumn i kierunek sortowania wybieraj z listy dozwolonych wartości. Do tego konto bazy z minimalnymi uprawnieniami. OWASP odradza ręczne escapowanie jako zamiennik parametrów.

Czy SQL injection to nadal problem w 2026 roku?

Tak. W OWASP Top 10:2025 kategoria Injection, do której należy SQL injection, zajmuje 5. miejsce, a samo SQLi ma ponad 14 tys. CVE. Według katalogu CISA KEV w 2026 roku (do 9 października) potwierdzono aktywne wykorzystywanie 8 podatności nazwanych „SQL Injection”, m.in. w Drupalu, WordPressie i bramce AI LiteLLM.

Jakie są rodzaje SQL injection?

Najczęściej wyróżnia się trzy grupy. In-band: wynik ataku widać w tej samej odpowiedzi aplikacji (np. komunikat błędu albo dane dołączone operatorem UNION). Blind, czyli ślepe: aplikacja nie pokazuje danych, więc wnioskuje się z różnic w odpowiedzi albo z czasu jej przyjścia. Out-of-band: dane wychodzą innym kanałem, np. przez zapytanie DNS. Osobno opisuje się second-order SQL injection.

Gdzie legalnie nauczyć się SQL injection?

Tylko w laboratoriach przeznaczonych do nauki albo we własnym środowisku, nigdy na cudzych stronach. W Cyberium — polskim kursie cyberbezpieczeństwa online — SQLi ma własny moduł w szkoleniu 7: podstawy SQL i MySQL, różne techniki ataków i automatyzacja w SQLmap, w laboratoriach w przeglądarce i w misji projektowej. Bezpłatnie możesz też ćwiczyć w Web Security Academy od PortSwigger.

Podsumowanie

Wstrzyknięcie SQL to prosty błąd — dane od użytkownika mieszają się z poleceniem dla bazy — który w 2026 roku wciąż trafia do katalogu aktywnie wykorzystywanych podatności, także w narzędziach AI. Ochrona: zapytania parametryzowane, lista dozwolonych wartości i minimalne uprawnienia. Najlepiej zrozumiesz to w laboratorium — po polsku i ze wsparciem eksperta w kursie cyberbezpieczeństwa Cyberium.

Źródła

Stan na 9 października 2026.