Przejdź do treści głównej
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ę?

  1. Prepared Statements (Zapytania przygotowane) w PDO lub MySQLi – parametry są przesyłane oddzielnie od struktury zapytania.
  2. Stosowanie rzutowania typów (intval($_GET['id'])).
  3. 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.