🌍 Module 7 – Sécurité des applications web

📘 Cours complet ⏱️ 4h 🎯 Bloc 3 – B3.4 / B3.5 A
Objectifs : identifier les vulnérabilités OWASP Top 10, mettre en œuvre des contre-mesures, sécuriser le développement et les environnements.

📖 Introduction

Les applications web sont la porte d'entrée privilégiée des attaquants. Les failles de sécurité Web sont responsables de la majorité des brèches de sécurité. Ce module vous présente les vulnérabilités les plus courantes (OWASP Top 10) et les bonnes pratiques pour les prévenir.

🎯

À l'issue de ce module, vous serez capable de :

  • Identifier les vulnérabilités OWASP Top 10.
  • Mettre en œuvre des protections contre les injections SQL et les XSS.
  • Sécuriser les sessions et l'authentification.
  • Configurer un WAF (Web Application Firewall).
  • Effectuer des tests de sécurité simples.

🛡️ OWASP Top 10 (2021)

Les 10 vulnérabilités web les plus critiques selon l'Open Web Application Security Project.

#VulnérabilitéDescription
1Broken Access ControlContrôle d'accès défaillant (ex : accès à des données d'autres utilisateurs).
2Cryptographic FailuresDéfauts de chiffrement (ex : données en clair, algorithmes faibles).
3InjectionInjection SQL, XSS, OS Command Injection, etc.
4Insecure DesignConception non sécurisée (ex : absence de privacy by design).
5Security MisconfigurationConfiguration par défaut non sécurisée (ex : serveur exposé).
6Vulnerable and Outdated ComponentsComposants obsolètes ou vulnérables (ex : jQuery ancien).
7Identification and Authentication FailuresAuthentification défaillante (ex : mots de passe faibles).
8Software and Data Integrity FailuresIntégrité logicielle (ex : dépendances non vérifiées).
9Security Logging and Monitoring FailuresAbsence de logs et de supervision.
10Server-Side Request ForgeryRequêtes frauduleuses côté serveur (SSRF).

🔍 Vulnérabilités courantes

3.1 – Injection SQL

3.2 – Cross-Site Scripting (XSS)

3.3 – Cross-Site Request Forgery (CSRF)

3.4 – Broken Authentication

💡

Bonnes pratiques : Appliquer le principe de "moindre privilège" aux bases de données, utiliser des requêtes paramétrées, valider et échapper toutes les entrées utilisateur.

🛠️ Sécurisation du développement

🛠️ Mise en pratique

5.1 – Simuler une injection SQL avec DVWA

DVWA (Damn Vulnerable Web Application) est une application vulnérable pour s'entraîner.

Résultat : la requête devient SELECT * FROM users WHERE id = '' OR '1'='1', qui renvoie tous les enregistrements.

Contre-mesure : utiliser des requêtes paramétrées (mysqli_prepare ou PDO).

5.2 – Protéger contre les XSS avec PHP

Échapper les caractères spéciaux :

<?php
$nom = $_GET['nom'] ?? '';
// Échapper les caractères pour éviter le XSS
$nom_securise = htmlspecialchars($nom, ENT_QUOTES, 'UTF-8');
echo "Bonjour " . $nom_securise;
?>
  • htmlspecialchars convertit les caractères spéciaux en entités HTML (<&lt;).
  • ENT_QUOTES encode également les guillemets simples et doubles.
  • Empêche l'exécution de code JavaScript injecté.

5.3 – Configurer un WAF (ModSecurity)

ModSecurity est un WAF open-source pour Apache/Nginx.

  • ModSecurity analyse les requêtes HTTP et les compare à des règles de signature.
  • Le CRS couvre les OWASP Top 10 (injection SQL, XSS, etc.).
  • En production, passer en mode "Enforcement" pour bloquer les attaques.

📝 Exercices d'application

Exercice 1 – Vocabulaire OWASP

Associez chaque vulnérabilité à sa définition :

  • Injection SQL : Insertion de code SQL dans une requête.
  • XSS : Injection de code JavaScript dans une page web.
  • CSRF : Exécution d'actions non autorisées sur une application authentifiée.
  • Broken Authentication : Défauts dans le système d'authentification.

Exercice 2 – Mise en situation

Vous développez un site e-commerce. Dressez la liste des mesures de sécurité à mettre en œuvre pour protéger l'application et les données clients.

  • HTTPS : Utiliser TLS pour chiffrer toutes les communications.
  • Authentification : MFA, politique de mots de passe robuste.
  • Injections : Requêtes paramétrées, validation des entrées.
  • XSS : Échappement des sorties, CSP.
  • CSRF : Jetons CSRF, SameSite cookies.
  • Sessions : Expiration, sécurisation des cookies (HttpOnly, Secure).
  • Données sensibles : Chiffrement au repos, pseudonymisation.
  • Logs : Journalisation des accès, monitoring des erreurs.
  • WAF : Protection en ligne avec ModSecurity.
  • Mises à jour : Maintenir tous les composants à jour.

🎯 Quiz d'auto‑évaluation

Testez vos connaissances. Sélectionnez une réponse, un feedback s'affichera immédiatement.

1. L'injection SQL consiste à :

2. Pour éviter les XSS, il faut :

3. Un WAF (Web Application Firewall) a pour rôle de :

4. Une attaque CSRF permet à un attaquant de :

5. La fonction PHP htmlspecialchars permet de :

📚 Ressources et liens utiles


← Retour au portail
BTS SIO – Lycée NDLP Avranches – Module 7 v1.0