Avatar ·

Les requêtes préparées PDO sont-elles suffisantes pour se protéger des injections SQL ?

Bonjour à tous. Je suis un développeur PHP débutant et j'ai une question sérieuse concernant la sécurité. J'ai lu beaucoup d'articles qui disent que l'utilisation de PDO avec des requêtes préparées (prepared statements) résout complètement le problème des injections SQL. Mais, honnêtement, je suis un peu confus.

Par exemple, j'écris ce code :

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$stmt->execute(['email' => $_POST['email']]);
$user = $stmt->fetch();
?>

Apparemment, tout est sécurisé. Mais j'ai vu des avertissements que PDO ne protège pas toujours, surtout si mal utilisé. Par exemple, que se passe-t-il si j'insère des données dans la requête avec query() ou si j'utilise bindParam() avec un mauvais type ? Et qu'en est-il des cas où je construis dynamiquement la requête, par exemple en ajoutant un tri ou une clause LIMIT ? Y a-t-il des pièges ?

Pouvez