Je me demande s'il est possible de détecter 100% des attaques SQLi possibles en utilisant une simple regex.
En d'autres termes, en utilisant un code PHP très simple comme exemple:
if (preg_match ("/ select / i", $ input)) {attack_log ("Possible SELECT SQLi détecté.")}
Les questions sont:
- Cette expression régulière interceptera-t-elle toutes les attaques SQLi possibles qui utilisent SELECT? Sinon, est-il possible de changer cette expression régulière pour qu'elle détecte toutes les injections qui reposent sur SELECT?
- Est-il possible de changer cette expression régulière pour qu'elle capture tous les SQLi possibles, donc pas seulement les instructions SELECT mais aussi tout le reste? J'ai peur que, pour y parvenir, j'aie besoin d'ajouter chaque mot clé SQL possible à l'expression régulière, y compris "AND" et "OR".
- Supposons que ce ne soit pas possible ou faisable pour détecter tous les SQLi en essayant de faire correspondre tous les mots-clés SQL possibles, y a-t-il un sous-ensemble limité de mots-clés qui me permettrait de détecter la grande majorité des attaques possibles?