Question

Je recherche un outil capable de détecter les requêtes malveillantes (telles que des injections ou des publications SQL évidentes) et d'interdire immédiatement l'adresse IP du demandeur/de l'ajouter à une liste noire.Je suis conscient que dans un monde idéal, notre code devrait être capable de gérer de telles requêtes et de les traiter en conséquence, mais un tel outil a beaucoup de valeur même lorsque le site est à l'abri de ce type d'attaques, car cela peut conduire à économiser de la bande passante, éviter la surcharge des analyses, etc.

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

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

Pas de solution correcte

Autres conseils

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

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 (sauf si votre projet a de très bons documents). )

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

Il ne s'agit pas d'un problème d'installation et d'exécution, vous devez vraiment savoir ce qu'est exactement l'injection SQL avant de pouvoir l'empêcher.C’est un problème sournois, il nécessite donc des protections tout aussi sournoises.

Ces 2 liens m'ont appris bien plus que les bases sur le sujet pour commencer, et m'ont aidé à mieux formuler mes futures recherches sur des questions spécifiques sans réponse.

Et bien que celui-ci ne soit pas un outil de recherche à 100 %, il "vous montrera la lumière" sur les problèmes existants dans votre code existant, mais comme avec les standards du Web, n'arrêtez pas de coder une fois que vous avez réussi ce test.

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 résisteront 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 contient, par exemple, une réponse à une question de programmation.

La seule option sensée 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.

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 fortes 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 puisque cette méthode serait beaucoup plus susceptible de renvoyer des faux positifs, mais ce serait au moins un début.

Une petite chose à garder à l'esprit :Dans certains pays (par ex.la majeure partie de l’Europe), les gens n’ont pas d’adresses IP statiques, la mise sur liste noire ne devrait donc pas être éternelle.

Oracle a un tutoriel en ligne sur l'injection SQL.Même si vous souhaitez une solution toute faite, cela pourrait vous donner quelques indications sur la façon de mieux l'utiliser pour vous défendre.

Maintenant que j'y pense, un filtre bayésien similaire à ceux utilisés pour bloquer le spam pourrait également fonctionner correctement.Si vous avez rassemblé 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.

Un de mes sites a récemment été piraté via SQL Injection.Il a ajouté un lien vers un virus pour chaque champ de texte de la base de données !Le correctif consistait à ajouter du code recherchant des 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 examine toutes les variables d'URL.Wikipédia propose également de bons liens pour vous aider.

Il est intéressant de voir comment cela est mis en œuvre des années plus tard par Google et par eux, supprimant complètement l'URL afin de prévenir les attaques XSS et autres activités malveillantes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top