Weryfikacja danych użytkownika
Weryfikacja danych użytkownika
Założenie: Pokażemy, jak bezpiecznie przetwarzać dane wejściowe od użytkownika, aby zapobiec atakom SQL Injection.
Krok po kroku:
- Przygotowanie danych: Załóżmy, że użytkownik wprowadza swoje imię i nazwisko w formularzu. Dane te są przekazywane do skryptu PHP za pomocą metody POST.
- Walidacja danych: Zanim użyjemy danych z formularza, musimy je zweryfikować. Użyjemy funkcji `filter_input` do filtrowania danych i usunięcia potencjalnie szkodliwych znaków.
$imie = filter_input(INPUT_POST, 'imie', FILTER_SANITIZE_STRING); $nazwisko = filter_input(INPUT_POST, 'nazwisko', FILTER_SANITIZE_STRING);
Funkcja `filter_input` pobiera dane z `INPUT_POST` (dane z formularza), nazwa pola (‘imie’, ‘nazwisko’) i filtr `FILTER_SANITIZE_STRING` który usuwa szkodliwe znaki.
- Przygotowanie zapytania SQL: Używając przygotowanych zapytań (prepared statements) unikniemy bezpośredniego wstawiania danych użytkownika do zapytania SQL.
$stmt = $pdo->prepare("SELECT * FROM users WHERE imie = ? AND nazwisko = ?"); $stmt->execute([$imie, $nazwisko]);
Zmienna `$pdo` reprezentuje połączenie z bazą danych. Znak `?` jest placeholderem, który zostanie zastąpiony bezpiecznie przez wartości z tablicy.
- Wyświetlenie wyników: Po wykonaniu zapytania, możemy wyświetlić wyniki.
$users = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($users as $user) { echo "Imię: " . $user['imie'] . "
"; echo "Nazwisko: " . $user['nazwisko'] . "
"; }
Pamiętaj, że ten przykład pokazuje podstawowe techniki zabezpieczania przed SQL Injection. W rzeczywistych aplikacjach należy stosować bardziej zaawansowane metody walidacji i sanitizacji danych.