Injections SQL de base?
-
06-07-2019 - |
Question
On m'a dit dans une question précédente que ma requête était sujet à Injections SQL.
get_stats = mysql_query("SELECT *
FROM visitors
WHERE site=' On m'a dit dans une question précédente que ma requête était sujet à Injections SQL.
<*>
Quelle serait la façon la plus simple d’aborder ce problème? Et avez-vous des lectures supplémentaires sur le sujet des injections? (quelque chose que je pourrais manquer sur Google). Merci!
GET[site]'
AND date BETWEEN '$start_date' AND '$end_date' ");
Quelle serait la façon la plus simple d’aborder ce problème? Et avez-vous des lectures supplémentaires sur le sujet des injections? (quelque chose que je pourrais manquer sur Google). Merci!
La solution
Utilisez les déclarations préparées .
Dans la plupart des cas, les instructions préparées combinent votre requête avec vos paramètres de manière sécurisée.
Autres conseils
$ _GET ['site'] est une valeur qui provient directement de l'URL du navigateur, ce qui signifie qu'un utilisateur peut facilement changer cette valeur en tout ce qu'il veut. Vous devez donc vérifier / désinfecter cette valeur, toutes les valeurs avant de l'envoyer. à une base de données.
Quelque chose comme ce serait un début, pourrait encore utiliser plus de travail et il y a beaucoup de façons de le faire, je créerais une fonction / classe personnalisée pour passer facilement toutes les variables à travers le site, ce qui peut simplement être répétitif comme ceci
$site = mysql_real_escape_string( $ _GET ['site'] est une valeur qui provient directement de l'URL du navigateur, ce qui signifie qu'un utilisateur peut facilement changer cette valeur en tout ce qu'il veut. Vous devez donc vérifier / désinfecter cette valeur, toutes les valeurs avant de l'envoyer. à une base de données.
Quelque chose comme ce serait un début, pourrait encore utiliser plus de travail et il y a beaucoup de façons de le faire, je créerais une fonction / classe personnalisée pour passer facilement toutes les variables à travers le site, ce qui peut simplement être répétitif comme ceci
<*>GET['site']);
$start_date = mysql_real_escape_string($start_date);
$end_date = mysql_real_escape_string($end_date);
get_stats = mysql_query("SELECT * FROM visitors WHERE site='$site' AND date >= '$start_date' AND date <= '$end_date' ");
mysql_real_escape_string est le plus basique et la forme la plus simple de sécurité ici.