Chapitre2
Chapitre2
Chapitre2
a) Définition
L'injection SQL est une des attaques les plus classiques qu'elle en est
devenue la plus populaire. Son principe est tellement simple mais
ingénieux et en 2017, elle parait encore à la tête du TOP 10
d'OWASP.
L'attaque consiste à forger son propre code SQL que l'on soumet au
serveur. Ce code-là sera mélangé à du code SQL propre à
l'application (ou site Web) ce qui conduira au détournement du
fonctionnement attendu. Les sites qui peuvent être vulnérables à
cette attaque sont ceux qui se basent sur une base de données
SQL. Donc si le site ne repose pas sur une base de données, il ne
présentera aucun risque vis-à-vis de l'injection SQL.
b) Exploitation
L'attaque repose sur l'exploitation des entrées d'un site Web comme
les champs de formulaires ou la barre d'URL. Par exemple, quand on
demande à l'utilisateur de s'authentifier en entrant un login et un
mot de passe, si celui-ci était un pirate aux mauvaises intentions,
alors au lieux de saisir du texte normal il saisirait des séquences de
codes SQL qu'il soumettrait au serveur. Si le site présente une
vulnérabilité à l'injection SQL alors il se peut que le code SQL injecté
s'exécute et donne lieu à un comportement inattendu comme avoir
accès illégalement à l'espace confidentiel.
Cette requête SQL retournera toutes les lignes (en général y'en aura
qu'une seule) où les champs 'login' et 'pass' contiendront
respectivement le login et le mot de passe saisis par le client.
Celui qui nous intéresse ici c'est qu'il apporte une immunité totale
contre les injections SQL si on sépare les données du traitement (les
requêtes préparées avec les marqueurs interrogatifs ou paramètres
nommés).
magic_quotes_gpc = On
Cette directive va tout simplement échapper automatiquement les
caractères spéciaux présents dans les chaines de caractères
entrantes (qui proviennent des formulaires, barre URL et cookies). Elle
agit en fait comme la fonction addslashes() mais d'une manière
automatisées.