Maison >base de données >tutoriel mysql >Comment les requêtes paramétrées protègent-elles contre l'injection SQL ?
Utilisation de requêtes paramétrées pour une interaction sécurisée avec les bases de données
L'injection SQL reste une menace de sécurité importante, permettant aux attaquants d'exécuter des requêtes malveillantes à l'aide des entrées soumises par l'utilisateur. . Pour protéger votre site Web, les requêtes paramétrées offrent une solution robuste. Cependant, leur intégration nécessite une gestion appropriée des connexions à la base de données.
Considérez cet exemple de code de page de connexion :
<code class="php">$userName = $_POST["username"]; $userPass = $_POST["password"]; $query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'"; $result = mysqli_query($dbc, $query); //$dbc is for MySQL connection: $dbc = @mysqli_connect($dbhost, $dbuser, $dbpass, $db) $row = mysqli_fetch_array($result); if(!$row){ echo "No existing user or wrong password."; }</code>
Mise en œuvre de requêtes paramétrées :
Pour éviter Injection SQL, remplacez ce code par :
<code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?"); mysqli_stmt_bind_param($stmt, "ss", $userName, $userPass); mysqli_stmt_execute($stmt); $row = mysqli_stmt_fetch($stmt);</code>
Gestion de la connexion :
Dans le code d'origine, la connexion à la base de données est établie à l'aide de mysqli_connect(). Cela doit être fait avant d'exécuter des requêtes. Assurez-vous de disposer d'un $dbc valide avant de continuer.
Meilleures pratiques de sécurité :
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!