Sanityzacja danych przed wstawieniem do bazy danych
Założenie: Pokażemy, jak oczyścić dane pochodzące z formularza przed wstawieniem ich do bazy danych, aby zapobiec atakom SQL injection i innym problemom związanym z bezpieczeństwem.
Krok po kroku:
- Pobranie danych z formularza: Załóżmy, że mamy formularz z polem “imię”. Dane z formularza pobieramy za pomocą zmiennej `$_POST[‘imie’]`. Jest to bardzo ważne, aby zawsze walidować dane pochodzące z formularzy.
- Sanityzacja danych: Użyjemy funkcji `htmlspecialchars()` do konwersji specjalnych znaków HTML na ich odpowiedniki w postaci encji HTML. To zapobiega potencjalnemu XSS (Cross-Site Scripting).
- Wstawienie do bazy danych: Po oczyszczeniu danych, możemy bezpiecznie wstawić je do bazy danych za pomocą przygotowanych zapytań (prepared statements). To zapobiega atakom SQL injection.
$imie = $_POST['imie'];
$imie_bezpieczne = htmlspecialchars($imie, ENT_QUOTES, 'UTF-8');
Funkcja `htmlspecialchars()` przyjmuje trzy argumenty: wartość do oczyszczenia, flagę `ENT_QUOTES` (konwertuje zarówno pojedyncze, jak i podwójne cudzysłowy) oraz kodowanie znaków `UTF-8`.
// Przykładowe przygotowane zapytanie (użyj PDO lub MySQLi)
$stmt = $pdo->prepare("INSERT INTO users (imie) VALUES (?)");
$stmt->execute([$imie_bezpieczne]);
Pamiętaj, aby zawsze używać przygotowanych zapytań, aby uniknąć SQL injection. Nigdy nie wstawiaj danych bezpośrednio do zapytania SQL.
Ten przykład pokazuje podstawy sanityzacji danych w PHP. Pamiętaj, że bezpieczeństwo aplikacji jest kluczowe, a sanityzacja danych to tylko jeden z elementów, które należy uwzględnić. Zachęcamy do dalszego zgłębiania tematu bezpieczeństwa aplikacji webowych.