Il n'y a pas de solution miracle ici. Les injections SQL peuvent prendre de nombreuses formes obscures et tenter de les détecter à l'aide d'expressions régulières ou d'une autre forme dans votre pare-feu, ou une application peut vous protéger des formes d'injection SQL les plus simples. Comme AdaTheDev l'a déjà noté, les outils automatisés qui inspectent votre code, tels que l'outil d'analyse de code MS, peuvent vous donner un coup d'envoi, mais là encore, il n'y a pas de solution miracle. Vous devrez passer en revue toute votre demande.
Lorsque cela représente beaucoup de travail, vous devriez faire un plan. Tout d'abord, faites un guide qui indique comment ces types d'attaques peuvent être atténués. Essayez également de diviser votre application en plusieurs parties, de très critique à moins critique. De cette façon, vous pouvez mieux estimer les coûts de réparation des bugs et laisser la direction décider de ce que cela peut coûter et donc du risque qu'ils sont prêts à prendre. Les parties de votre application auxquelles des utilisateurs non authentifiés peuvent accéder sont les plus critiques. Si tout le monde (dans le monde) peut créer un compte dans votre application, toutes les fonctionnalités auxquelles ces utilisateurs peuvent accéder sont très critiques. Plus la population est petite et plus vous faites confiance à ces utilisateurs, plus le risque est faible. Vous pouvez peut-être vous en sortir en réparant ces pièces plus tard. Mais ne jamais sous-estimer un bon hacker. Il/elle pourrait être en mesure de compromettre le compte d'un utilisateur avec des privilèges élevés et commencer à tester les possibilités d'injection SQL en utilisant ce compte.
Toujours essayer d'avoir une stratégie de défense en profondeur, avoir plusieurs (ou plusieurs) couches de défense. Par exemple, ne vous connectez jamais avec votre base de données en tant que SA à partir de votre application. Créez un compte avec seulement les privilèges nécessaires et peut-être même créer plusieurs comptes SQL, un compte par rôle (ou par un groupe de rôles). Bien que restreindre les privilèges à la base de données aide beaucoup à atténuer le risque, encore une fois, ne pariez pas sur elle comme une seule couche de défense. Par exemple, This article, explique comment un pirate peut abuser d'un compte de privilège inférieur quand il est capable de faire une injection SQL. Il est admirable que vous posiez cette question ici, parce que j'ai vu de nombreux développeurs dans le passé qui ne veulent tout simplement pas savoir, ce qui est très effrayant, car l'entreprise fait souvent confiance à ses développeurs (ce qui est effrayant bien).
Je vous souhaite la meilleure des chances.
Dans quel projet est-il écrit? –
Le code est écrit en VB.Net –
Si vous avez 1000 endroits où cela pourrait poser un problème, alors il vaut la peine de chercher des moyens automatisés de modifier le code pour utiliser les requêtes paramétrées. –