xss - Capture d'injection SQL et d'autres demandes Web malveillantes

Translate

Je recherche un outil capable de détecter les requêtes malveillantes (telles que les injections SQL évidentes ou les publications) et interdira immédiatement l'adresse IP du demandeur / ajoutera à une liste noire. Je suis conscient que dans un monde idéal, notre code devrait être capable de gérer 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, car il peut conduire à économiser de la bande passante, éviter le gonflement des analyses, etc.

Idéalement, je recherche une plateforme multiplateforme (LAMP/.NET) solution qui se situe à un niveau supérieur à la pile technologique; peut-être au niveau du serveur Web ou du matériel. Je ne sais pas si cela existe, cependant.

Quoi qu'il en soit, j'aimerais entendre les commentaires de la communauté afin de voir quelles pourraient être mes options en matière de mise en œuvre et d'approche.

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Vous le regardez presque dans le mauvais sens, aucun outil 3party qui ne connaît pas vos méthodes d'application / dénomination / données / domaine ne pourra parfaitement vous protéger.

Quelque chose comme la prévention des injections SQL est quelque chose qui doit être dans le code, et 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 (à moins que votre projet n'ait de très bons documents )

Votre droit, tout cela a déjà été fait. Vous n'êtes pas obligé de réinventer la roue, mais vous devez en sculpter une nouvelle en raison des différences de diamètre des essieux de chacun.

Ce n'est pas un problème de lancement et d'exécution, vous devez vraiment vous familiariser avec ce qu'est exactement l'injection SQL avant de pouvoir l'empêcher. C'est un problème sournois, il faut donc des protections tout aussi sournoises.

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

Et bien que celui-ci ne soit pas tout à fait un chercheur à 100%, il "vous montrera 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 avez réussi ce test.

La source
Mat
Translate

Le problème avec un outil générique est qu'il est très difficile de proposer 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 valable dans un champ de formulaire qui, par exemple, contient une réponse à une question de programmation.

La seule option judicieuse est de nettoyer l'entrée avant de la transmettre à votre base de données mais de la transmettre néanmoins. Sinon, de nombreux utilisateurs parfaitement normaux et non malveillants seront bannis de votre site.

La source
Translate

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 de la transmettre à un code qui compte le nombre d'instructions qui seraient réellement exécutées. S'il est supérieur au nombre attendu, il y a de bonnes chances qu'une 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 de faux positifs, mais ce serait au moins un début.

La source
Translate

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 liste noire ne devrait pas être éternelle.

La source
Translate

Oracle a undidacticiel en ligne sur l'injection SQL. Même si vous voulez une solution toute faite, cela pourrait vous donner quelques astuces pour mieux l'utiliser pour vous défendre.

La source
Translate

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

La source
Translate

Un de mes sites a été récemment piraté via SQL Injection. Il a ajouté un lien vers un virus pour chaque champ de texte dans la base de données! Le correctif consistait à ajouter du code à la recherche de mots clés SQL. Heureusement, j'ai développé dans ColdFiusion, donc le code se trouve dans mon fichier Application.cfm qui est exécuté au début de chaque page Web et il examine toutes les variables d'URL. Wikipedia a également de bons liens pour vous aider.

La source
ECE
Translate

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

La source