Attraper l'injection SQL et d'autres requêtes Web malveillantes

Je suis à la recherche d'un outil capable de détecter les requêtes malveillantes (telles que les requêtes ou posts d'injection SQL) et bannira immédiatement l'adresse IP du demandeur / ajouter à une liste noire. Je suis conscient que dans un monde idéal, notre code devrait être capable de traiter de telles demandes et de les traiter en conséquence, mais il y a beaucoup de valeur dans un tel outil, même lorsque le site est à l'abri de ce type d'attaques. économie de bande passante, prévention de la charge d'analyse, etc.

Idéalement, je suis à la recherche d'une solution multiplateforme ( LAMP / .NET ) qui se situe à un niveau plus élevé que la pile technologique; peut-être au niveau du serveur Web ou du matériel. Je ne suis pas sûr si cela existe, cependant.

De toute façon, j'aimerais entendre les commentaires de la communauté afin que je puisse voir quelles sont mes options en matière de mise en œuvre et d'approche.

0
Veuillez sélectionner la meilleure réponse, merci.
ajouté l'auteur mruanova, source

8 Réponses

Le problème avec un outil générique est qu'il est très difficile de trouver un ensemble de règles qui ne correspondent qu'à une véritable attaque.

Les mots-clés SQL sont tous des mots anglais, et n'oubliez pas que la chaîne

 DROP TABLE users;

est parfaitement valide dans un champ de formulaire qui, par exemple, contient une réponse à une question de programmation.

La seule option sensée consiste à nettoyer l'entrée avant de la transmettre à votre base de données, mais de la transmettre quand même. Sinon, beaucoup d'utilisateurs parfaitement normaux et non malveillants seront bannis de votre site.

0
ajouté

Une petite chose à garder à l'esprit: dans certains pays (c'est-à-dire la plupart de l'Europe), les gens n'ont pas d'adresses IP statiques, donc la mise sur liste noire ne devrait pas être éternelle.

0
ajouté

Une méthode qui pourrait fonctionner dans certains cas serait de prendre la chaîne sql qui s'exécuterait si vous utilisiez naïvement les données du formulaire et le passiez à un code qui compte le nombre d'instructions qui seraient réellement exécutées. Si elle est supérieure au nombre attendu, il y a une chance décente qu'une tentative d'injection ait été tentée, en particulier pour les champs qui sont peu susceptibles d'inclure des caractères de contrôle tels que le nom d'utilisateur.

Quelque chose comme une zone de texte normale serait un peu plus difficile, car cette méthode serait beaucoup plus susceptible de renvoyer des faux positifs, mais ce serait un début, au moins.

0
ajouté

Maintenant que j'y pense, un filtre bayésien similaire à ceux utilisés pour bloquer le spam pourrait aussi fonctionner correctement. Si vous avez réuni un ensemble de texte normal pour chaque champ et un ensemble d'injections sql, vous pourrez peut-être l'entraîner pour signaler les attaques par injection.

0
ajouté

Oracle a un didacticiel en ligne sur l'injection SQL . Même si vous voulez une solution prête à l'emploi, cela peut vous donner quelques indications sur la façon de mieux l'utiliser pour vous défendre.

0
ajouté

Intéressant comment ceci est mis en application des années plus tard par Google et les enlevant l'URL tous ensemble afin d'empêcher des attaques de XSS et d'autres activités malveillantes

0
ajouté

Vous ne le voyez pas dans le bon sens, aucun outil 3party qui ne connaît pas vos méthodes d'application / nommage / données / domaine va être en mesure de vous protéger parfaitement.

Quelque chose comme la prévention par injection SQL est quelque chose qui doit être dans le code, et le mieux écrit par les personnes qui ont écrit le SQL, car ce sont eux qui sauront ce qui devrait / ne devrait pas être dans ces champs (sauf si votre projet a de très bons docs )

Votre droit, tout a déjà été fait. Vous n'avez pas vraiment besoin de réinventer la roue, mais vous devez en sculpter une nouvelle en raison des différences dans les diamètres des essieux.

Il ne s'agit pas d'un problème ponctuel, vous devez connaître l'injection SQL avant de pouvoir l'empêcher. C'est un problème sournois, il faut donc des protections tout aussi sournoises.

Ces deux liens m'ont appris beaucoup plus que les bases sur le sujet pour commencer, et m'a aidé à mieux formuler mes futures recherches sur des questions spécifiques qui n'ont pas été répondues.

Et alors que celui-ci n'est pas tout à fait un chercheur à 100%, il va "vous montrer la lumière" sur le problème existant dans votre code existant, mais comme avec les standards web, n'arrêtez pas de coder une fois que vous passez ce test.

0
ajouté

One of my sites was recently hacked through SQL Injection. It added a link to a virus for every text field in the db! The fix was to add some code looking for SQL keywords. Fortunately, I've developed in ColdFiusion, so the code sits in my Application.cfm file which is run at the beginning of every webpage & it looks at all the URL variables. Wikipedia has some good links to help too.

0
ajouté