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

Utilisation des paramètres pour mysql_query

Tout d'abord, ce dont il s'agit s'appelle SQL-Injection . Il s'agit simplement de la possibilité de modifier les requêtes sur la base de données via la saisie de l'utilisateur.

Prenons un exemple :

Requête :

SELECT temp1 FROM temp WHERE temp2 = 'VAR1';

Nous allons maintenant attribuer à VAR1 la valeur de :'; DROP TABLE *; -- Et nous aurons :

SELECT temp1 FROM temp WHERE temp2 = ''; DROP TABLE *; --';

Avec mysql_real_escape_string cela ressemblerait à ceci :

SELECT temp1 FROM temp WHERE temp2 = '\'; DROP TABLE *; --'

mysql_real_escape_string 'sécurise' une chaîne pour une utilisation dans une requête.

Mais à la fin, vous devriez arrêter d'utiliser le mysql_* tout à fait . Ils sont obsolètes et considérés comme non sécurisés lorsqu'il s'agit d'empêcher l'injection SQL ou d'autres moyens de tempérer les requêtes.

Vous devriez simplement arrêter de concaténer les requêtes ensemble comme ceci et commencez à utiliser instructions préparées , qui non seulement sont plus faciles à utiliser, empêchent l'injection SQL par défaut, mais peuvent également améliorer la vitesse de votre application.

Pour PHP, il existe deux extensions conçues pour fermer l'ensemble de mysql_* ouvert :

Et je le répète :Veuillez arrêter d'utiliser mysql_* !