js-challenge: Module de défi Javascript NGINX
Installation
Vous pouvez installer ce module dans n'importe quelle distribution basée sur RHEL, y compris, mais sans s'y limiter :
- RedHat Enterprise Linux 7, 8, 9 et 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 et Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-js-challenge
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-js-challenge
Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :
load_module modules/ngx_http_js_challenge_module.so;
Ce document décrit nginx-module-js-challenge v0.0.2 publié le 21 août 2024.
Une demande pour une version stable existe. Votez ici.
ngx_http_js_challenge_module
Accès simple basé sur une preuve de travail Javascript pour Nginx avec pratiquement aucun surcoût.
Installation facile : ajoutez simplement load_module /path/to/ngx_http_js_challenge_module.so; à votre fichier nginx.conf et suivez les instructions de configuration.
Configuration
Configuration simple
server {
js_challenge on;
js_challenge_secret "change me!";
# ...
}
Configuration avancée
server {
js_challenge on;
js_challenge_secret "change me!";
js_challenge_html /path/to/body.html;
js_challenge_bucket_duration 3600;
js_challenge_title "Vérification de votre navigateur...";
location /static {
js_challenge off;
alias /static_files/;
}
location /sensitive {
js_challenge_bucket_duration 600;
#...
}
#...
}
js_challenge on|offActive ou désactive les défis Javascript pour ce bloc de configurationjs_challenge_secret "secret"Secret pour générer les défis. PAR DÉFAUT : "changeme"js_challenge_html "/path/to/file.html"Chemin vers le fichier html à insérer dans la balise<body>de la page intermédiairejs_challenge_title "title"Sera inséré dans la balise<title>de la page intermédiaire. PAR DÉFAUT : "Vérification de votre navigateur..."js_challenge_bucket_duration timeIntervalle pour proposer le défi js, en secondes. PAR DÉFAUT : 3600
Limitations connues / À faire
- Les utilisateurs avec les cookies désactivés seront bloqués dans une boucle de rafraîchissement infinie (À faire : rediriger avec un paramètre de requête connu, si aucun cookie n'est spécifié mais que l'argument de requête est défini, afficher une page d'erreur)
- Si nginx est derrière un proxy inverse/un répartiteur de charge, le même défi sera envoyé à différents utilisateurs et/ou le cookie de réponse sera invalidé lorsque l'utilisateur sera redirigé vers un autre serveur. (À faire : utiliser l'en-tête x-real-ip lorsque disponible)
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-js-challenge.