« Injections SQL et méthodes de protection » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 33 : | Ligne 33 : | ||
<<Image exemple injection dans un formulaire sans mot de passe>> |
<<Image exemple injection dans un formulaire sans mot de passe>> |
||
<span style="color:green">SELECT</span> * FROM Users WHERE name='User'; -- 'AND password = 'xxx'; |
<span style="color:green">SELECT</span> * <span style="color:green">FROM</span> Users <span style="color:green">WHERE</span> name='User'; <span style="color:grey">-- 'AND password = 'xxx';</span> |
||
Version du 14 novembre 2016 à 15:22
Auteurs : Rémi Rebillard et Loïc Robergeon
Les injections SQL (ou SQLi pour SQL Injection) est une une faille de sécurité dans les formulaires. On injecte dans une requète SQL, un morceau de requête qui n'est pas prévu par le système et va alors renvoyer des informations qui lui sont normalement caché, voir même les modifier.
Qu'est ce que c'est ?
Les injections SQL s’effectue principalement sur des formulaires dans des pages Web. Ces formulaires demande des informations à l'utilisateurs (login, mot de passe...), qui vont être saisie par l'utilisateur. Cette saisie est alors utilisé dans la requète SQL afin de récupérer les informations désirées par l'utilisateurs. Cette requète SQL interagie directement sur la base de donnée du serveur.
<<Image exemple formulaire>>
Cependant, certains site web sont mal configuré, et des failles apparaisse alors dans ceux-ci. Par exemple, au lieu de rentrer son login dans le précédant formulaire, on rentre d'autres informations comme :
<<Image exemple injection dans un formulaire>>
Ces caractères sont spéciaux car ils vont interagir directement sur la requète SQL lié au formulaire. Au lieu de se servir des informations présentes dans le formulaire, les informations vont modifier la requête et retourner des informations qui ne sont pas accessible a l'utilisateurs.
L'utilisateur va alors pouvoir effectuer diverse actions sur la base de donnée, comme consulter la liste des personnes présente avec leurs informations personnels, ou même la modifier.
Quels sont les différents types d’injection ?
Connexion sans mot de passe :
<<Image exemple injection dans un formulaire sans mot de passe>>
SELECT * FROM Users WHERE name='User'; -- 'AND password = 'xxx';
Cette requète va récupérer la liste de tout les utilisateurs présents dans la base de donnée.