Mysql
 sql >> Base de données >  >> RDS >> Mysql

Où utiliser mysql_real_escape_string pour empêcher l'injection SQL ?

Fondamentalement, chaque fois que vous utilisez des données non sécurisées (entrée utilisateur, valeur d'une base de données, d'un fichier ou d'un site Web externe, c'est-à-dire toute donnée que vous n'êtes pas 100 % sûr qu'il est sûr) dans une requête SQL, vous devez l'échapper en utilisant mysql_real_escape_string . Notez que selon OWASP , cette fonction n'est pas sécurisée pour échapper les noms de table dynamiques (mais c'est beaucoup moins courant que l'insertion d'entrée utilisateur "de base").

Je vous propose de jeter un oeil à l'intégralité de l'article article OWASP sur l'injection SQL , et aussi pour parcourir le reste du site. C'est une excellente source d'informations sur la sécurité des applications Web.

IMO, le moyen préféré d'empêcher l'injection SQL est d'utiliser déclarations préparées .

N'oubliez pas que si vous choisissez d'utiliser mysql_real_escape_string() il ne fonctionne que lorsqu'il est utilisé à l'intérieur d'une chaîne délimitée par des guillemets. Ne l'utilisez jamais sur des valeurs sans guillemets. Cela inclut les valeurs numériques ; au lieu de cela, validez que l'entrée utilisateur est en fait numérique.