Mysql
 sql >> Base de données >  >> RDS >> Mysql

Filtrer la requête MySQL en PHP

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 .