Les attaques par injection SQL se produisent lorsque l'entrée de l'utilisateur est mal encodé. En règle générale, l'entrée de l'utilisateur correspond à des données que l'utilisateur envoie avec sa requête, c'est-à-dire des valeurs dans le $_GET
, $_POST
, $_COOKIE
, $_REQUEST
, ou $_SERVER
tableaux. Cependant, les entrées de l'utilisateur peuvent également provenir de diverses autres sources, telles que des sockets, des sites Web distants, des fichiers, etc. Par conséquent, vous devez vraiment traiter tout sauf les constantes (comme 'foobar'
) en tant qu'entrée utilisateur .
Dans le code que vous avez posté, mysql_real_escape_string
est utilisé pour encoder (=échapper) les entrées de l'utilisateur. Le code est donc correct, c'est-à-dire qu'il ne permet aucune attaque par injection SQL.
Notez qu'il est très facile d'oublier l'appel à mysql_real_escape_string
- et une seule fois suffit pour un attaquant habile ! Par conséquent, vous pouvez utiliser le moderne PDO
avec instructions préparées
au lieu d'adodb.