Jedynym sposobem jest prawidłowe uniknięcie danych przesłanych przez użytkownika. Inni wskazali kilka sposobów na zrobienie tego.
Jest inny sposób:przygotowane zestawienia i symbole zastępcze. Przygotowane zestawienia są obsługiwane przez każdy nowoczesny Interfejs bazy danych PHP, w tym mysqli i PDO .
Użyjmy PDO jako demonstracji. Powiedzmy, że chcieliśmy zaktualizować trochę danych w tabeli foo
przesłane przez użytkownika.
$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));
Zmienne w tablicy przekazane do execute
zastąp symbole zastępcze znaku zapytania w zapytaniu. Kiedy tak się dzieje, są automatycznie zamieniane i cytowane . Nie musisz ręcznie je zmieniać, aby bezpiecznie umieścić je w bazie danych!
Z drugiej strony, nadal będziesz musiał je filtrować pod kątem nieoczekiwanych treści, takich jak HTML, JavaScript, litery, w których oczekujesz cyfr itp. Bezpieczne wstawianie danych do bazy danych to tylko połowa bitwy .