INF.03Sieci i Bezpieczeństwo
Atak SQL Injection (Wstrzykiwanie SQL)
Groźny atak polegający na wstrzyknięciu złośliwego kodu SQL do pól formularza lub parametrów URL w celu nieautoryzowanego odczytu lub modyfikacji bazy.
Jak dochodzi do SQL Injection?
Podatność występuje, gdy dane wejściowe od użytkownika są bezpośrednio sklejane z zapytaniem SQL bez użycia parametrów wiązanych.
PHP
// ❌ KOD PODATNY NA ATAK:
$login = $_POST['login']; // Użytkownik wpisuje: ' OR '1'='1
$sql = "SELECT * FROM users WHERE login = '$login'";
// Baza wykona: SELECT * FROM users WHERE login = '' OR '1'='1' (zaloguje każdego!)Jak skutecznie chronić aplikację?
- Prepared Statements (Zapytania przygotowane) w PDO lub MySQLi – parametry są przesyłane oddzielnie od struktury zapytania.
- Stosowanie rzutowania typów (
intval($_GET['id'])). - Ograniczenie uprawnień konta bazy danych w myśl zasady najmniejszych uprawnień (Principle of Least Privilege).
PHP
// KOD BEZPIECZNY (PDO Prepared Statement):
$stmt = $pdo->prepare('SELECT * FROM users WHERE login = :login');
$stmt->execute([':login' => $_POST['login']]);Chcesz sprawdzić to pojęcie w praktyce?
Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Atak SQL Injection (Wstrzykiwanie SQL) lub rozpocznij trening.