sql >> Databasteknik >  >> RDS >> Mysql

Filtrera bort MySQL-fråga i PHP

Det enda sättet är att korrekt undkomma användarinlämnad data. Andra har pekat ut några sätt att göra det på.

Det finns ett annat sätt:förberedda uttalanden och platshållare. Förberedda uttalanden stöds av alla moderna PHP-databasgränssnitt, inklusive mysqli och PDO .

Låt oss använda SUB som en demonstration. Låt oss säga att vi ville uppdatera lite data i tabellen foo skickat av en användare.

$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));

Variablerna i arrayen skickades till execute byt ut frågetecknets platshållare i frågan. När detta händer escapes de automatiskt och citeras . Du behöver inte escape dem manuellt för att göra dem säkra att lägga i databasen!

Å andra sidan kommer du fortfarande att behöva filtrera dem för oväntat innehåll, som HTML, Javascript, bokstäver där du förväntar dig siffror, etc. Att göra data säker att infoga i databasen är bara hälften av striden .



  1. Hur tar man bort filer när en post raderas?

  2. Skalär UDF Inlining i SQL Server 2019

  3. Hur man uppdaterar länkade tabeller i Access 2016 efter att backend-databasen flyttats till en ny plats

  4. Hur fungerar COPY och varför är det så mycket snabbare än INSERT?