Maison > développement back-end > tutoriel php > `mysqli_real_escape_string` offre-t-il une protection complète contre l'injection SQL ?

`mysqli_real_escape_string` offre-t-il une protection complète contre l'injection SQL ?

Linda Hamilton
Libérer: 2024-12-20 03:02:13
original
699 Les gens l'ont consulté

Does `mysqli_real_escape_string` Offer Complete Protection Against SQL Injection?

"mysqli_real_escape_string" peut-il empêcher complètement l'injection SQL ?

Considérez l'exemple de code suivant :

$email = mysqli_real_escape_string($db_con, $_POST['email']);
$psw = mysqli_real_escape_string($db_con, $_POST['psw']);

$query = "INSERT INTO `users` (`email`,`psw`) 
           VALUES ('" . $email . "','" . $psw . "')";
Copier après la connexion

Ce code est-il sécurisé contre l'injection SQL et autres attaques ?

Réponse : Non.

Comme souligné dans les exemples de code fournis, "mysqli_real_escape_string" seul est insuffisant pour garantir la protection contre l'injection SQL . Les attaquants peuvent exploiter les vulnérabilités de sa mise en œuvre pour contourner le filtrage et compromettre l'application.

Solution recommandée :

Le moyen le plus efficace d'empêcher l'injection SQL est d'utiliser déclarations préparées. Les instructions préparées isolent les données des requêtes SQL, garantissant ainsi qu'aucune entrée externe n'interfère avec la structure de la requête. En outre, envisagez de mettre en œuvre une liste blanche stricte pour filtrer les données spécifiquement en fonction de leur objectif prévu. Cette approche minimise le risque d'injection SQL et d'autres vulnérabilités de sécurité.

Exemple de requête sécurisée utilisant des instructions préparées :

$stmt = $db->prepare(
    "SELECT * FROM table 
    WHERE col = ? ORDER BY {$sortby} ASC 
    LIMIT ?, ?"
);
$stmt->execute(['value', $start, $howmany]);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
Copier après la connexion

En incorporant ces mesures, vous pouvez améliorez considérablement la sécurité de vos opérations SQL contre les attaques malveillantes.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal