TP BTS SIO 2ème année — série de 3 TPs d'analyse de failles de sécurité web courantes (injection SQL, XSS, CSRF, upload de fichiers), avec mise en évidence, exploitation et contre-mesures.
Trois TPs de 2e année de BTS SIO consacrés aux principales failles de sécurité web. Pour chacune, démarche identique : on identifie la faille sur une application volontairement vulnérable, on l'exploite pour comprendre les conséquences, puis on met en place les contre-mesures côté code.
1. Injection SQL (TP Banque V1)
À partir d'une URL légitime (?action=profilClient&client=1), interception et modification de la requête via les DevTools pour injecter un UNION SELECT permettant de récupérer les identifiants/mots de passe de la table conseiller. Contre-mesures : requêtes préparées avec bindValue (typage PDO::PARAM_INT), filtrage avec htmlspecialchars(), jamais de SELECT *.
2. XSS — Cross-Site Scripting (TP Banque V1)
Deux variantes mises en évidence :
<script>document.body.innerHTML = 'Page défigurée';</script> dans le champ prénom → la page se réécrit côté client.<script>alert('XSS reflected');</script> → exécution du script à l'affichage.Contre-mesures : échappement systématique des entrées (htmlspecialchars()), encoding contextuel, CSP headers.
3. CSRF — Cross-Site Request Forgery (TP Gestion_CCF / ConsulterCCF)
Mise en évidence : un utilisateur authentifié sur Gestion_CCF visite une autre application piégée (ConsulterCCF) qui effectue des actions en son nom (modification de données) en exploitant le cookie de session toujours actif.
Contre-mesures : implémentation d'un système de jetons CSRF — token généré à l'authentification, intégré comme champ caché dans chaque formulaire de modification, vérifié côté contrôleur avant traitement. Habitudes utilisateur : se déconnecter explicitement entre sessions.
4. Upload de fichiers (TP Gestion_CCF)
Mise en évidence : téléversement d'un fichier A_telecharger.php dans un dossier d'upload mal protégé → exécution arbitraire de code PHP côté serveur. Variante avec double extension A_telecharger.jpg.php qui contourne les filtres naïfs.
Contre-mesures :
La sécurité d'une application est une condition directe de sa continuité : une faille exploitée peut entraîner défiguration de pages (XSS), vol de données (injection SQL), exécution arbitraire de code (upload), ou actions non consenties sur un compte utilisateur (CSRF) — autant d'incidents qui interrompent ou compromettent le service. Le TP a consisté à identifier ces failles sur des applications volontairement vulnérables, comprendre leurs impacts, puis mettre en place les contre-mesures côté code (requêtes préparées avec bindValue, htmlspecialchars, jetons CSRF, whitelist d'extensions à l'upload, désactivation de l'exécution PHP dans les dossiers de dépôt) pour garantir la disponibilité et l'intégrité du service.