Comment nettoyer correctement les entrées utilisateur en PHP contre les XSS et les injections SQL ?
Bonjour à tous ! Je suis un développeur PHP débutant, j'écris mon premier site — un simple livre d'or. Les utilisateurs laissent un nom et un message que je sauvegarde dans MySQL et que j'affiche ensuite sur la page.
Actuellement, mon code ressemble à ceci :
```php
// Sauvegarde en BDD
$name = $_POST['name'];
$message = $_POST['message'];
$sql = "INSERT INTO comments (name, message) VALUES ('$name', '$message')";
mysqli_query($conn, $sql);
// Affichage sur la page
echo "
$name: $message
"; ``` J'ai remarqué que si je saisis dans le champ nom quelque chose comme ``, une fenêtre contextuelle apparaît lors de l'affichage du message. Et si je saisis `' OR '1'='1`, la requête semble se casser. J'ai lu qu'il faut "nettoyer" (sanitize) les entrées, mais je ne comprends pas comment le faire correctement. Sur Internet, il y a des tonnes de conseils — certains disent d'utiliser `htmlspecialchars()`, d'autres `strip_tags()`, d'autres encore `mysqli_real_escape_string()`. Mais qu'est-ce qui est vraiment nécessaire ? Ou faut-il tout utiliser ensemble ? S'il vous plaît, aidez-moi.