Unikanie dynamicznych zapytań
Założenie: Pokażemy, jak uniknąć dynamicznych zapytań w PHP, aby zmniejszyć ryzyko ataku SQL Injection.
Krok po kroku:
- Złe podejście – dynamiczne zapytanie: To przykład podatny na SQL Injection. Użytkownik może wpisać złośliwy kod w zmiennej
$imie
. - Poprawne podejście – użycie prepared statements: Prepared statements zapobiegają SQL Injection, parametryzując zapytanie.
- Wyjaśnienie: W drugim przykładzie, zmienna
$imie
jest traktowana jako parametr, a nie jako część samego zapytania SQL. Baza danych interpretuje ją jako zwykłą wartość, a nie jako kod SQL.
$imie = $_GET['imie'];
$zapytanie = "SELECT * FROM uzytkownicy WHERE imie = '$imie'";
$wynik = mysqli_query($polaczenie, $zapytanie);
$imie = $_GET['imie'];
$zapytanie = $polaczenie->prepare("SELECT * FROM uzytkownicy WHERE imie = ?");
$zapytanie->bind_param("s", $imie); // "s" oznacza string
$zapytanie->execute();
$wynik = $zapytanie->get_result();
Ten przykład pokazuje podstawy unikania dynamicznych zapytań w PHP. Dalsza nauka zagadnień bezpieczeństwa w PHP jest kluczowa dla tworzenia bezpiecznych aplikacji.