js-challenge: Módulo de desafio Javascript do NGINX
Instalação
Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:
- RedHat Enterprise Linux 7, 8, 9 e 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 e 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
Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:
load_module modules/ngx_http_js_challenge_module.so;
Este documento descreve o nginx-module-js-challenge v0.0.2 lançado em 21 de agosto de 2024.
Uma solicitação para uma versão estável existe. Vote aqui.
ngx_http_js_challenge_module
Acesso simples baseado em prova de trabalho em javascript para NGINX com praticamente nenhuma sobrecarga.
Instalação fácil: basta adicionar load_module /path/to/ngx_http_js_challenge_module.so; ao seu arquivo nginx.conf e seguir as instruções de configuração.
Configuração
Configuração simples
server {
js_challenge on;
js_challenge_secret "mude-me!";
# ...
}
Configuração avançada
server {
js_challenge on;
js_challenge_secret "mude-me!";
js_challenge_html /path/to/body.html;
js_challenge_bucket_duration 3600;
js_challenge_title "Verificando seu navegador...";
location /static {
js_challenge off;
alias /static_files/;
}
location /sensitive {
js_challenge_bucket_duration 600;
#...
}
#...
}
js_challenge on|offAtiva ou desativa desafios em javascript para este bloco de configuraçãojs_challenge_secret "secret"Segredo para gerar os desafios. PADRÃO: "changeme"js_challenge_html "/path/to/file.html"Caminho para o arquivo html a ser inserido na tag<body>da página intersticialjs_challenge_title "title"Será inserido na tag<title>da página intersticial. PADRÃO: "Verificando seu navegador..."js_challenge_bucket_duration timeIntervalo para solicitar o desafio em js, em segundos. PADRÃO: 3600
Limitações conhecidas / TODO
- Usuários com cookies desativados ficarão presos em um loop de atualização infinito (TODO: redirecionar com um parâmetro de consulta conhecido, se nenhum cookie for especificado, mas o argumento de consulta estiver definido, exibir uma página de erro)
- Se o NGINX estiver atrás de um proxy reverso/balancer de carga, o mesmo desafio será enviado a diferentes usuários e/ou o cookie de resposta será invalidado quando o usuário for redirecionado para outro servidor. (TODO: usar o cabeçalho x-real-ip quando disponível)
GitHub
Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-js-challenge.