REPUBLIQUE DU BENIN
************
MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE
SCIENTIFIQUE (MESRS)
************
UNIVERSITE D’ABOMEY-CALAVI (UAC)
************
INSTITUT DE FORMATION ET DE RECHERCHE EN INFORMATIQUE
( IFRI )
************
OPTION : Génie Logiciel
***********
Thème :
Les vulnérabilités les plus courantes dans un IHM : Injection SQL,
XSS, attaques CSRF.
Sous la supervision de : Réalisé par :
Mme Rose GOHOUE BOUSSARI Samuel E.O
Année académique : 2024-2025
Introduction 3
I. Injections SQL ............................................................................... 4
i. Définition .................................................................................... 4
ii. Mécanisme ................................................................................. 4
iii. Types d'Injections SQL ............................................................. 5
iv. Impacts..................................................................................... 5
v. Prévention .................................................................................. 6
II. Cross-Site Scripting (XSS) .............................................................. 7
i. Définition .................................................................................... 7
ii. Types de XSS ............................................................................... 7
iii. Impacts..................................................................................... 8
iv. Prévention................................................................................ 8
III. Cross-Site Request Forgery (CSRF) ................................................ 9
i. Définition .................................................................................... 9
ii. Mécanisme ................................................................................. 9
iii. Impacts................................................................................... 10
iv. Prévention.............................................................................. 10
Conclusion ........................................................................................ 11
2
Introduction
Les Interfaces Homme-Machine (IHM) sont des composants critiques des
applications web et mobiles, permettant aux utilisateurs d'interagir avec les
systèmes. Cependant, ces interfaces sont souvent la cible d'attaques malveillantes
en raison de vulnérabilités courantes. Parmi les plus répandues, on trouve les
injections SQL, les attaques XSS (Cross-Site Scripting) et les attaques CSRF
(Cross-Site Request Forgery). Ces vulnérabilités peuvent compromettre la
confidentialité, l'intégrité et la disponibilité des données et des systèmes. Cet
exposé explore en détail ces vulnérabilités, leurs mécanismes, leurs impacts et les
mesures de prévention.
3
I. Injections SQL
i. Définition
Une injection SQL est une vulnérabilité de sécurité qui permet à un attaquant
d'interférer avec les requêtes SQL qu'une application envoie à sa base de données.
Cela se produit lorsque l'application ne valide pas, ne filtre pas ou n'échappe pas
correctement les entrées utilisateur avant de les inclure dans une requête SQL.
ii. Mécanisme
Entrée utilisateur non validée : L'application prend des données provenant de
l'utilisateur (par exemple, un formulaire de connexion) et les inclut directement
dans une requête SQL.
Injection de code SQL : L'attaquant saisit une chaîne malveillante dans un champ
de saisie, comme un nom d'utilisateur ou un mot de passe, qui modifie le
comportement de la requête SQL.
Exécution de la requête : La base de données exécute la requête modifiée, ce qui
peut entraîner des actions non autorisées.
Exemple :
Supposons une requête SQL pour vérifier les informations de connexion :
SELECT * FROM users WHERE username = 'admin' AND password =
'password';
Un attaquant pourrait saisir ' OR '1'='1 dans le champ du mot de passe,
transformant la requête en :
SELECT * FROM users WHERE username = 'admin' AND password = '' OR
'1'='1';
4
Cette requête retourne tous les utilisateurs, car la condition '1'='1' est toujours
vraie, permettant à l'attaquant de contourner l'authentification.
iii. Types d'Injections SQL
Injection SQL classique : Modification des requêtes SELECT, INSERT, UPDATE
ou DELETE.
Injection SQL aveugle : L'attaquant ne voit pas directement les résultats de la
requête mais peut déduire des informations en fonction du comportement de
l'application.
Injection SQL basée sur le temps : L'attaquant utilise des délais d'exécution pour
déterminer si une condition est vraie ou fausse.
iv. Impacts
Accès non autorisé : L'attaquant peut accéder à des données sensibles, comme
des informations personnelles ou des mots de passe.
Modification de données : L'attaquant peut modifier, supprimer ou insérer des
données dans la base de données.
Compromission du serveur : Dans des cas extrêmes, l'attaquant peut exécuter des
commandes système sur le serveur.
5
v. Prévention
Requêtes paramétrées : Utiliser des requêtes préparées avec des paramètres pour
séparer les données du code SQL.
Validation des entrées : Vérifier que les entrées utilisateur correspondent au
format attendu (par exemple, un email ou un nombre).
Échappement des caractères spéciaux : Échapper les caractères spéciaux dans
les entrées utilisateur pour empêcher leur interprétation comme du code SQL.
Limitation des privilèges : Restreindre les permissions de l'utilisateur de la base
de données pour minimiser les dommages en cas d'attaque.
Utilisation d'ORM : Les Object-Relational Mapping (ORM) comme Hibernate ou
Entity Framework peuvent réduire les risques en générant des requêtes SQL
sécurisées.
6
II. Cross-Site Scripting (XSS)
i. Définition
Le Cross-Site Scripting (XSS) est une vulnérabilité qui permet à un attaquant
d'injecter des scripts malveillants (généralement en JavaScript) dans des pages
web consultées par d'autres utilisateurs. Ces scripts s'exécutent dans le contexte
du navigateur de la victime, permettant à l'attaquant de voler des informations ou
d'effectuer des actions non autorisées.
ii. Types de XSS
XSS Réfléchi (Reflected XSS) :
Le script malveillant est inclus dans une URL ou un formulaire et est
immédiatement exécuté lorsque la page est chargée.
Exemple : Un attaquant envoie un lien contenant un script à une victime. Lorsque
la victime clique sur le lien, le script s'exécute dans son navigateur.
XSS Stocké (Stored XSS) :
Le script est stocké sur le serveur (par exemple, dans une base de données) et est
exécuté chaque fois que la page est consultée.
Exemple : Un attaquant publie un commentaire contenant un script sur un forum.
Chaque utilisateur qui consulte le commentaire exécute le script.
XSS basé sur le DOM (DOM-based XSS) :
Le script est exécuté en modifiant le DOM (Document Object Model) du
navigateur sans interaction avec le serveur.
Exemple : Un script malveillant est injecté via des paramètres d'URL et modifie
le contenu de la page directement dans le navigateur.
Exemple : <script>alert('XSS Attack!');</script>
7
Si cette chaîne est injectée dans un champ de commentaire non sécurisé, elle sera
exécutée par le navigateur de tout utilisateur visualisant le commentaire.
iii. Impacts
Vol de cookies de session : L'attaquant peut voler les cookies de session d'un
utilisateur et usurper son identité.
Redirection vers des sites malveillants : L'attaquant peut rediriger l'utilisateur
vers un site de phishing ou un site contenant des logiciels malveillants.
Exécution d'actions non autorisées : L'attaquant peut effectuer des actions au
nom de l'utilisateur, comme publier des messages ou effectuer des transactions.
iv. Prévention
Échappement des caractères spéciaux : Échapper les caractères spéciaux (comme
<, >, &, ") dans les entrées utilisateur pour empêcher leur interprétation comme
du code HTML ou JavaScript.
Validation des entrées : Valider les entrées utilisateur pour s'assurer qu'elles
correspondent au format attendu.
Content Security Policy (CSP) : Implémenter une politique de sécurité de contenu
pour restreindre l'exécution de scripts non autorisés.
Utilisation de bibliothèques sécurisées : Utiliser des bibliothèques comme
DOMPurify pour nettoyer les entrées utilisateur avant de les afficher.
8
III. Cross-Site Request Forgery (CSRF)
i. Définition
Une attaque CSRF force un utilisateur authentifié à exécuter des actions non
désirées sur une application web sans son consentement. L'attaquant exploite la
confiance de l'application envers l'utilisateur en envoyant des requêtes forgées à
partir d'un site malveillant.
ii. Mécanisme
Authentification de l'utilisateur : L'utilisateur est connecté à une application
vulnérable.
Requête forgée : L'attaquant incite l'utilisateur à visiter un site malveillant ou à
cliquer sur un lien.
Exécution de la requête : Le site malveillant envoie une requête à l'application
vulnérable en utilisant les cookies de session de l'utilisateur.
Action non autorisée : La requête est exécutée comme si elle venait de
l'utilisateur, entraînant des actions non désirées.
Exemple :
<img src="https://site-vulnérable.com/transfer?amount=1000&to=attacker"
width="0" height="0">
Si l'utilisateur est connecté, cette requête peut transférer des fonds sans son
consentement.
9
iii. Impacts
Transfert de fonds non autorisé : L'attaquant peut transférer de l'argent depuis le
compte de l'utilisateur.
Modification de paramètres : L'attaquant peut modifier les paramètres de
l'utilisateur, comme son adresse email ou son mot de passe.
Suppression de données : L'attaquant peut supprimer des données ou des
comptes utilisateur.
iv. Prévention
Tokens CSRF : Utiliser des jetons uniques pour chaque requête, stockés dans un
champ caché du formulaire et vérifiés par le serveur.
Vérification de l'origine : Vérifier l'origine des requêtes avec l'en-tête Referer ou
Origin.
Double vérification : Implémenter des mécanismes de confirmation pour les
actions sensibles, comme la saisie d'un mot de passe ou un code de validation.
SameSite Cookies : Utiliser l'attribut SameSite pour les cookies afin de limiter
leur envoi à des requêtes provenant du même site.
10
Conclusion
Les vulnérabilités telles que les injections SQL, les attaques XSS et CSRF
représentent des risques majeurs pour la sécurité des IHM. Elles peuvent entraîner
des pertes de données, des atteintes à la vie privée et des dommages financiers.
Pour les prévenir, il est essentiel de suivre les bonnes pratiques de développement
sécurisé, de valider et de nettoyer les entrées utilisateur, et d'utiliser des
mécanismes de sécurité appropriés. La sensibilisation et la formation des
développeurs à ces risques sont également cruciales pour garantir la sécurité des
applications. En adoptant une approche proactive et en intégrant la sécurité dès la
conception, les organisations peuvent réduire considérablement les risques liés à
ces vulnérabilités.
11