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
Libérer: 2025-01-23 04:36:10
original
820 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal