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'essaie de comprendre la sécurité lors du travail avec les bases de données. J'ai lu beaucoup d'articles où l'on dit que PDO et les prepared statements sont une solution miracle contre les injections SQL. Mais plusieurs points me troublent.
Voici un exemple de mon code :
```php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->execute([':username' => $_GET['username']]);
$user = $stmt->fetch();
```
Je pense que c'est sécurisé car j'utilise des placeholders. Mais ensuite, j'ai vu ce code dans un ancien projet :
```php
$pdo->query("SELECT * FROM users WHERE id = " . $_GET['id']);
```
Et je me suis demandé : que se passe-t-il si j'oublie accidentellement d'utiliser des prepared statements à un endroit ? Ou si j'utilise PDO mais que je configure mal l'émulation des prepared statements ? Un attaquant peut-il contourner la protection de PDO ?
J'ai aussi entendu parler des requêtes dynamiques