sql >> Database teknologi >  >> RDS >> Mysql

Filtrering af MySQL-forespørgsel i PHP

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 .



  1. JPA OneToMany/ManyToOne-forholdet virker ikke - Hvad mangler jeg?

  2. Mysql-deltagelsesforespørgsel

  3. Oracle-klientinstallationsfejl - stien er for lang

  4. Zend_Db_Vælg rækkefølge efter tilfældig, kompatibel i mssql / mysql