Real_escape_string est une méthode dans l'extension MySQLI , qui est principalement utilisée pour échapper aux caractères spéciaux dans les chaînes, empêchant ainsi le code SQL malveillant d'être exécuté. Il ajoutera automatiquement une barre oblique inverse ( \ ) avant les caractères dangereux, le faisant perdre sa signification particulière dans la syntaxe SQL.
Toute situation où l'entrée utilisateur est directement épissée en instructions SQL nécessite d'échapper au contenu d'entrée. Sinon, un attaquant peut utiliser l'entrée pour construire des déclarations malveillantes, modifiant ainsi la logique des opérations de base de données.
Voici un exemple simple qui montre comment utiliser Real_escape_string pour gérer en toute sécurité l'entrée utilisateur:
<code> & lt ;? php // Créer une connexion mysqli $ conn = new mysqli ('gitbox.net', 'username', 'mot de passe', 'database'); // Vérifiez si la connexion réussit
if ($ con-> connect_error) {
Die ("La connexion a échoué:". $ con-> connect_error);
}
// Supposons que l'utilisateur a soumis le nom d'utilisateur via le formulaire
$ user_input = $ _post ['username'];
// Utilisez Real_escape_string pour échapper à la saisie des utilisateurs
$ Safe_Input = $ Conn-> real_escape_string ($ user_input);
// Construire une instruction de requête SQL
$ sql = "select * dans les utilisateurs où username = '$ Safe_Input'";
// Exécuter la requête
$ result = $ Conn-> Query ($ SQL);
if ($ result-> num_rows> 0) {
// Traiter les résultats de la requête
while ($ row = $ result-> fetch_assoc ()) {
Echo "ID utilisateur:". $ row ["id"]. " - Nom d'utilisateur: " . $ row ["nom d'utilisateur"]. "<br>";
}
} autre {
Echo "Aucun utilisateur correspondant trouvé.";
}
$ Conn-> close ();
?>
</code>
Real_escape_string peut identifier des caractères dans des chaînes qui peuvent être mal comprises par le moteur SQL, telles que des citations simples ( ' ), des citations doubles ( " ), des barres bordées ( \ ), etc., et les préfixer, ce qui fait que ces caractères perdent la signification particulière de la structure de déclaration SQL, empêchant ainsi l'exécution du code d'attaque.
La connexion doit avoir été établie : Real_escape_string dépend de l'état de connexion de la base de données et ne doit pas être appelé avant la connexion.
Portée de l'application : Cette fonction ne convient qu'à l'échappement de la chaîne et ne peut pas remplacer les instructions préparées plus sûres.
Il est recommandé d'utiliser des instructions de prétraitement : bien que Real_escape_string soit efficace, il est recommandé d'utiliser des instructions de prétraitement de MySQLI ou PDO pour les requêtes SQL, ce qui peut encore améliorer la sécurité et la maintenabilité du code.
Étiquettes associées:
SQL