La première étape de ce test est de comprendre lorsque l'application interagit avec un serveur DB
afin d'accéder à certaines données. Des exemples typiques de cas où une application a besoin de
parler à un DB comprennent:
formes d'authentification: lorsque l'authentification est effectuée en utilisant un formulaire web, les
chances sont que les informations d'identification de utilisateur sont vérifiées par rapport à une
base de données qui contient tous les noms d'utilisateur et mots de passe (ou, mieux, mot de passe
hashes).
Les moteurs de recherche: la chaîne présentée par l'utilisateur peuvent être utilisées dans une
requête SQL qui extrait tous les documents pertinents à partir d'une base de données.
les sites E-Commerce: les produits et leurs caractéristiques (prix, description, disponibilité, etc.)
sont très susceptibles d'être stockées dans une base de données.
Le testeur doit faire une liste de tous les champs d'entrée dont les valeurs pourraient être utilisées
dans l'élaboration d'une requête SQL, y compris les champs cachés de requêtes POST, puis les tester
séparément, en essayant d'interférer avec la requête et de générer une erreur. Considérez aussi en-
têtes HTTP et les cookies.
Le premier test consiste habituellement en ajoutant une seule apostrophe ( ') ou un point-virgule (;)
au champ ou un paramètre en cours de test. La première est utilisée dans SQL comme un
terminateur de chaîne et, si non filtrée par l'application, cela conduirait à une requête incorrecte. La
seconde est utilisée pour mettre fin à une instruction SQL et, si elle n'a pas été filtré, il est également
susceptible de générer une erreur. La sortie d'un champ vulnérable pourrait ressembler à ce qui
suit (sur un Microsoft SQL Server, dans ce cas):
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the
character string ''.
/target/target.asp, line 113
commenter également délimiteurs (- ou / * * /, etc.) d'autres mots-clés SQL comme «ET» et «OU»
peut être utilisé pour essayer de modifier la requête et. Une technique très simple mais parfois
encore efficace consiste simplement à insérer une chaîne où il est prévu un certain nombre, comme
une erreur comme celle-ci peut être générée: