Le seul moyen est d'échapper correctement les données soumises par l'utilisateur. D'autres ont indiqué certaines façons de le faire.
Il existe un autre moyen :déclarations préparées et les espaces réservés. Les déclarations préparées sont prises en charge par tous les modernes Interface de base de données PHP, y compris mysqli et AOP .
Utilisons PDO comme démonstration. Disons que nous voulions mettre à jour un peu de données dans la table foo
soumis par un utilisateur.
$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));
Les variables du tableau passées à execute
remplacer les espaces réservés de point d'interrogation dans la requête. Lorsque cela se produit, ils sont automatiquement échappés et cités . Vous n'avez pas besoin de les échapper manuellement pour les mettre en toute sécurité dans la base de données !
D'un autre côté, vous devrez toujours les filtrer pour le contenu inattendu, comme HTML, Javascript, les lettres où vous attendez des chiffres, etc. Rendre les données sûres à insérer dans la base de données est seulement la moitié de la bataille .