Maison > Article > développement back-end > mysql_real_escape_string() et mysql_escape_string() sont-ils suffisants pour la sécurité des applications ?
mysql_real_escape_string() et mysql_escape_string() sont-ils suffisamment sécurisés pour les applications ?
Introduction :
Le maintien de la sécurité des applications est crucial et la sécurité des bases de données joue un rôle important. Bien que mysql_real_escape_string() et mysql_escape_string() soient couramment utilisés pour se protéger contre les injections SQL, des inquiétudes surviennent quant à leur efficacité.
Question :
Est-ce que mysql_real_escape_string() et mysql_escape_string() suffisent pour la sécurité des applications ?
Réponse :
Non.
Vulnérabilités de mysql_real_escape_string() et mysql_escape_string()
Ces fonctions sont insuffisantes pour une sécurité complète des applications en raison de plusieurs failles de sécurité :
Injection SQL :
Exemple :
$sql = "SELECT number FROM PhoneNumbers WHERE " . mysql_real_escape_string($field) . " = " . mysql_real_escape_string($value);
Cette requête peut être exploité en insérant des données malveillantes, conduisant potentiellement à un accès non autorisé à la base de données.
Attaques LIKE SQL :
Exemple :
$sql = "SELECT url FROM GrabbedURLs WHERE " . mysql_real_escape_string($field) . " LIKE '%s%%' LIMIT %s";
Cette requête permet à un attaquant de récupérer tous les enregistrements, posant des risques de sécurité.
Exploits de jeu de caractères :
Solution recommandée : déclarations préparées
Pour remédier à ces vulnérabilités, la mesure de sécurité recommandée consiste à utiliser des déclarations préparées.
Exemple :
$pdo = new PDO($dsn); $column = 'url'; $value = 'http://www.stackoverflow.com/'; $limit = 1; $statement = $pdo->prepare('SELECT url FROM GrabbedURLs WHERE ' . $column . '=? LIMIT ' . $limit); $statement->execute(array($value)); while (($data = $statement->fetch())) { }
Conclusion :
mysql_real_escape_string() et mysql_escape_string() offrent une protection limitée contre certains Attaques par injection SQL. Cependant, ils sont insuffisants pour protéger les applications contre diverses autres vulnérabilités. L'approche recommandée consiste à utiliser des instructions préparées pour garantir une sécurité complète des applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!