Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql PDO und dynamische SQL-Injektion für gespeicherte Prozeduren

Ja, natürlich.

Was ist, wenn in_var ist gleich dem UNION SELECT-Passwort von ' UNION SELECT password from admins -- ?

Um das zu vermeiden, sollten Sie keinen Frachtkult verwenden vorbereitete Anweisung, sondern eine echte, indem Sie Ihre Variable durch einen Platzhalter ersetzen.

SET @query = CONCAT("SELECT * FROM my_table  WHERE my_column = ? LIMIT 1;");

PREPARE stmt FROM @query;
EXECUTE stmt USING @in_var;