Interactive Security Playground
Bienvenue dans le bac à sable de sécurité. Ici, vous pouvez expérimenter des vulnérabilités célèbres de manière sécurisée et visuelle directement dans votre navigateur.
Vulnerability: Reflected XSS
Injectez un script JavaScript dans le champ de recherche pour l'exécuter dans le contexte de la page vulnérable (simulée).
Essayez ce payload :
<script>alert('Hacked by Alessandro')</script>
Results for query:
🛡️ Comment le corriger ?
Il faut échapper les caractères spéciaux avant d'insérer l'input utilisateur dans le DOM,
par exemple avec textContent au lieu de innerHTML ou via une
librairie de sanitization.
Vulnerability: Cross-Site Request Forgery (CSRF)
Cliquez sur un lien malveillant en tant qu'utilisateur "connecté" et observez l'action non-désirée exécutée à votre insu.
Regardez ce chaton tout mignon !
🛡️ Comment le corriger ?
Un jeton Anti-CSRF (CSRF Token) doit être généré aléatoirement pour chaque session et inclus obligatoirement dans les requêtes de changement d'état (POST, PUT, DELETE).
Vulnerability: JWT Manipulation (alg: none)
Modifiez le payload du token JWT (qui définit le rôle 'user') et passez l'algorithme à 'none' pour contourner la signature.
🛡️ Comment le corriger ?
Le serveur doit toujours imposer un algorithme spécifique (ex: HS256 ou RS256) et ne jamais accepter dynamiquement "alg: none".
Vulnerability: Smart Contract Reentrancy
Videz les fonds du contrat victime en effectuant des appels récursifs avant que ce dernier ne mette à jour votre solde.
Vuln Contract (Bank)
// withdraw()
uint bal = balances[msg.sender];
(bool ok,) = msg.sender.call{value: bal}("");
balances[msg.sender] = 0; // TROP TARD!
Attacker Contract
🛡️ Comment le corriger ?
Il faut respecter le pattern Checks-Effects-Interactions : Mettre à jour l'état (le solde à 0) AVANT d'envoyer l'ETH (l'interaction externe).