De enige manier is om op de juiste manier te ontsnappen aan door de gebruiker ingediende gegevens. Anderen hebben gewezen op enkele manieren om dit te doen.
Er is een andere manier:voorbereide verklaringen en plaatshouders. Voorbereide verklaringen worden ondersteund door elke moderne PHP-database-interface, inclusief mysqli en BOB .
Laten we PDO als demonstratie gebruiken. Laten we zeggen dat we wat gegevens in de tabel foo
. wilden bijwerken ingediend door een gebruiker.
$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));
De variabelen in de array doorgegeven aan execute
vervang de tijdelijke aanduidingen voor vraagtekens in de query. Wanneer dit gebeurt, worden ze automatisch ontsnapt en geciteerd . U hoeft ze niet handmatig te escapen om ze veilig in de database te plaatsen!
Aan de andere kant moet je ze nog steeds filteren op onverwachte inhoud, zoals HTML, Javascript, letters waar je cijfers verwacht, enz. Gegevens veilig maken om in de database in te voegen is slechts de helft van de strijd .