Den eneste måde er at undslippe brugerindsendte data korrekt. Andre har peget på nogle måder at gøre det på.
Der er en anden måde:forberedte erklæringer og pladsholdere. Forberedte udsagn understøttes af alle moderne PHP-databasegrænseflade, inklusive mysqli og PDO .
Lad os bruge PDO som en demonstration. Lad os sige, at vi ønskede at opdatere en smule data i tabellen foo
indsendt af en bruger.
$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));
Variablerne i arrayet blev sendt til execute
erstatte spørgsmålstegnets pladsholdere i forespørgslen. Når dette sker, bliver de automatisk escaped og citeret . Du behøver ikke manuelt at undslippe dem for at gøre dem sikre at lægge i databasen!
På den anden side skal du stadig filtrere dem for uventet indhold, såsom HTML, Javascript, bogstaver, hvor du forventer tal osv. At gøre data sikre at indsætte i databasen er kun halvdelen af kampen .