Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Robot wall #53

Merged
merged 4 commits into from Oct 5, 2021
Merged

Robot wall #53

merged 4 commits into from Oct 5, 2021

Conversation

XavierJp
Copy link
Contributor

@XavierJp XavierJp commented Oct 5, 2021

Cette PR introduit une middleware protectWithCaptcha a appeler en tout début de la route à protéger contre les robots.

protectWithCaptcha vérifie la présence d'un cookie attestant que le visiteur a passé une étape de Captcha et n'est pas un robot. Si le cookie est absent ou périmé (plus de 10min) la réponse est négative. Sinon le visteur peut accéder a la page.

Si cette vérification s'avère négative, l'utilisateur est redirigé sur la page captcha qui lui affiche un challenge anti-bot.

A la soumission de ce dernier, le visiteur doit encore appeler la route d'API /api/verify-captcha qui vérifie auprès des services de Google le succès de challenge anti-bot.

Soit Google confirme et on redirige vers la page initialement demandée, tout en ajoutant un cookie qui whiteliste le visiteur pour les 10 prochaines minutes.

Soit Google "denonce" le visiteur et celui ci est redirigé vers /403.

@@ -0,0 +1,84 @@
import Cookies from 'cookies';

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

il y a une tonne de manipulations techniques dans ce fichier, ça me lève une alerte dans ma tête. D'une part j'ai du mal à en faire une review pertinente, d'autre part je me dis : si cette complexité est nécessaire et non couverte par une lib externe, alors dédramatise-la avec des tests unitaires, si elle est couverte par une lib externe, utilise-la.

@XavierJp XavierJp merged commit 046c800 into main Oct 5, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants