Comme vous l'avez vu jusqu'à présent, les injections de compétences sont très dangereuses et très faciles à
trouver pour Ocker.
Vous les trouverez partout sur des sites Web très célèbres.
Les gens essaient d'empêcher ces vulnérabilités en utilisant des filtres.
Les filtres peuvent donner l’impression qu’il n’ya pas d’exploits, mais si vous essayez vraiment plus durement en
utilisant différents types d’encodage ou un proxy, vous pourrez alors ignorer la plupart de ces filtres.
Certains programmeurs utilisent une liste noire.
Ainsi, par exemple, ils empêchent l'utilisation de l'union.
Ils empêchent l'utilisation d'insert et d'autres choses comme ça.
Encore une fois, ce n'est pas sûr à 100%.
Il peut être contourné en utilisant une liste blanche.
Exactement les mêmes problèmes que la liste noire.
La meilleure façon de le faire est de programmer votre application Web de manière à ne pas
permettre l’injection de code, puis l’exécuter.
La meilleure façon de le faire est donc d’utiliser une instruction de paramétrage où les données et le code sont séparés.
Et la meilleure façon de vous montrer ce que je veux dire par là, c’est utiliser un exemple: je garde le moins de programmation
possible.
Dans cet exemple, je ne veux pas que ce soit un programme et un exemple.
Il y a en fait des erreurs dans la programmation, mais j'essaie de vous expliquer davantage le concept que la
manière de le programmer.
Donc, le code vulnérable que nous examinions utilisait pour cela, donc il sélectionnait une étoile parmi les comptes pour
lesquels le nom d'utilisateur est égal à ce que nous avons mis dans la zone de texte 1, puis dans la zone de texte 1.
Disons simplement le mettre ici.
Nous avions l'habitude de dire en tant qu'hommes, puis de fermer le code, puis de faire une union pour sélectionner et exécuter autre chose.
Et puis une fois que nous avions terminé, nous ajoutions le commentaire qui ignore fondamentalement tout ce qui
vient après.
Ainsi, lorsque vous copiez ceci et que vous le mettez ici, vous verrez ce
qui se passe.
Donc, c'est la sélection.
Maintenant, éliminons simplement cela, car il est simplement désagréable de faire la coupe
et je vais en fait juste commenter cela afin qu'il puisse sélectionner des comptes où le nom d'utilisateur est
égal à Aardman Union tout ce que nous voulons faire.
C'est très grave et il est très difficile de se protéger.
Comme je l'ai dit, utiliser des filtres et tout souligner uniquement le problème ne sera pas résolu.
La meilleure façon de procéder consiste à utiliser les instructions de paramétrage exactement comme cela.
C'est donc le moyen le plus sûr de le faire.
Tout d’abord, vous préparez votre déclaration dans la plupart des
langues, comme BHB, qui ont toutes une fonction semblable. Vous pouvez préparer une sélection parmi les comptes pour lesquels
un nom d’utilisateur correspond à un point d’interrogation, puis vous envoyez les valeurs.
Donc, nous savons maintenant que l'énoncé de compétence est une étoile sélectionnée parmi les comptes pour lesquels le nom d'utilisateur est égal à quelque
chose, puis la valeur de la zone de texte 1.
Ainsi, même si nous intervenons et que nous utilisons notre déclaration très sournoise ici et que nous la collons, l’application Web saura
que la valeur de ce choix est admen choisie par Union.
Elle essaie d’aller et de commencer par les comptes où le nom d’utilisateur est le nom d’utilisateur, puis
il ajoute ses propres citations et essaie de trouver un nom d’utilisateur avec le nom d’utilisateur suivant.
Donc tout cela sera exécuté comme si, alors
ce sera la prochaine des comptes où le nom d'utilisateur est égal à autant d'unions choisissent ce hashtag.
Ainsi, rien de ce que vous mettez dans votre zone de texte ne sera envoyé comme valeur et l'application Web saura qu'il
s'agit d'une valeur.
Ce n'est pas un code et il ne sera jamais exécuté.
Par conséquent, cela vous protégera contre les injections Escurial.
Vous pouvez utiliser les filtres comme deuxième ligne de défense.
Et je vous conseille également d'utiliser le moins de privilèges possibles. Par conséquent, utilisez pour chaque base de données un utilisateur disposant du moins de privilèges qu'ils souhaitent. Ne
laissez donc pas les utilisateurs faire quoi que ce soit qu'ils ne leur permettent
pas.
S'il s'agit d'un simple site Web qui ne fait que la sélection, n'autorisez l'utilisateur qu'à sélectionner s'il doit seulement sélectionner
et insérer, puis lui permettre uniquement de sélectionner une réponse.
Et ceci est une règle que vous devriez garder avec tout, même dans l'existence.
Assurez-vous que la personne avec les autorisations est toujours aussi possible.
Chaque utilisateur ne dispose d'aucune autorisation supplémentaire dont il n'a pas besoin.