Maison >base de données >tutoriel mysql >Comment les requêtes paramétrées empêchent-elles l'injection SQL ?

Comment les requêtes paramétrées empêchent-elles l'injection SQL ?

DDD
DDDoriginal
2025-01-23 04:36:10844parcourir

How Do Parameterized Queries Prevent SQL Injection?

Requêtes paramétrées : un bouclier contre l'injection SQL

Comprendre les requêtes paramétrées

Une requête paramétrée, également appelée instruction préparée, est une technique permettant de créer des instructions SQL. Il sépare les données dynamiques (paramètres) des parties fixes de la requête. Cela permet un paramétrage efficace lors de l'exécution.

PHP et MySQL : une démonstration pratique

Illustrons avec une requête SQL qui inclut un paramètre pour l'adresse e-mail d'un utilisateur :

<code class="language-sql">SELECT * FROM users WHERE email = 'foo@example.com'</code>

Implémentation avec mysqli

<code class="language-php"><?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param('s', 'foo@example.com');
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    // Process the retrieved data...
}

$stmt->close();
?></code>

Mise en œuvre avec AOP

<code class="language-php"><?php
$pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bindParam(1, 'foo@example.com', PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll();

foreach ($result as $row) {
    // Process the retrieved data...
}
?></code>

Principaux avantages des requêtes paramétrées :

  • Amélioration des performances : La précompilation de la requête et sa réutilisation avec différents paramètres améliorent considérablement l'efficacité par rapport à la compilation d'une nouvelle requête pour chaque ensemble de paramètres.
  • Sécurité robuste : Le principal avantage est sa protection contre les vulnérabilités d'injection SQL. En séparant les variables de la requête, cela empêche les utilisateurs malveillants d'injecter du code nuisible.

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!

Déclaration:
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