Créer un système de CAPTCHA dynamique et sécurisé avec NestJS
Plongée au cœur de Math & Shapes Captcha, une API anti-bot innovante générant des SVGs dynamiques avec validation JWT.
Initialisation...
Plongée au cœur de Math & Shapes Captcha, une API anti-bot innovante générant des SVGs dynamiques avec validation JWT.
Les systèmes anti-bots classiques comme Google reCAPTCHA ou Cloudflare Turnstile sont très efficaces, mais ils s'accompagnent souvent de compromis sur la confidentialité des utilisateurs (tracking) et l'indépendance de l'architecture.
C'est ce constat qui m'a poussé à développer Math & Shapes Captcha, une API moderne, légère et 100% open-source, développée avec NestJS.
L'objectif était de concevoir un système qui :
Le backend est bâti sur une stack robuste :
Le workflow est conçu pour être robuste face aux scripts automatisés :
15 + 7) ou un défi géométrique.challengeId) et une très courte durée de vie (ex: 2 minutes maximum).challengeId via le front.L'un des défis majeurs dans la création d'un CAPTCHA visuel est d'empêcher les outils de Reconnaissance Optique de Caractères (OCR), comme Tesseract, de lire le texte.
Pour contrer cela, l'API génère des chemins vectoriels complexes : les nombres ne sont pas de simples balises <text> SVG (qui seraient triviales à parser), mais des formes déformées avec des lignes de bruit dynamiques de la même couleur qui s'entrecroisent avec le contenu principal. L'ajout d'une inversion de couleurs dynamique selon le thème de l'utilisateur (Dark Mode) rajoute une couche supplémentaire de perturbation.
Vous pouvez tester l'intégration de ce CAPTCHA en temps réel sur la page d'accueil de ce portfolio (lors de la simulation de système verrouillé) ou sur la section de Contact pour valider l'envoi du message !
🔗 Code Source (GitHub) : mmct13/captcha-perso
🔗 Démo API live : Documentation API
N'hésitez pas à jeter un œil au code et à proposer des améliorations. En cybersécurité, la lutte contre les bots est un jeu du chat et de la souris qui ne s'arrête jamais !