Jediným způsobem je správně uniknout datům odeslaným uživatelem. Jiní poukázali na některé způsoby, jak toho dosáhnout.
Existuje další způsob:připravená prohlášení a zástupné symboly. Připravená prohlášení podporuje každý moderní Rozhraní databáze PHP, včetně mysqli a CHOP .
Použijme PDO jako ukázku. Řekněme, že jsme chtěli aktualizovat část dat v tabulce foo
zadané uživatelem.
$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));
Proměnné v poli předané do execute
nahraďte v dotazu zástupné symboly otazníku. Když k tomu dojde, jsou automaticky uvozeny a uvozeny . Nemusíte je ručně uvádět, abyste je bezpečně vložili do databáze!
Na druhou stranu je stále budete muset filtrovat pro neočekávaný obsah, jako je HTML, Javascript, písmena, kde očekáváte čísla atd. Zabezpečení dat pro vložení do databáze je jen polovina bitvy .