Qualquer um que colocar um servidor NGINX online e olhar para ele access.log
uma semana depois encontrará muitas tentativas de exploração de URL. Todos os dias, a qualquer hora.
E daí que eu rejeitasse todo e qualquer parâmetro de URL. E se cada string de consulta fosse mascarada com um NGINX rewrite
que não corresponderia a qualquer coisa não definida como um rewrite
retorno natural de 404 Not Found?
Ou uma série de reescritas em ordem colocadas dentro desse bloco de localização sempre presente?
location / {
rewrite "^/api/v1/users/?$" /api/v1/Users.php last;
rewrite "^/api/v1/users/(all|active|inactive)?$" /api/v1/Users.php?status=$1 last;
rewrite "^/api/v1/users/(\d+)/?$" /api/v1/Users.php?userId=$1 last;
}
# URL Match examples...
http://localhost/api/v1/users
http://localhost/api/v1/users/
http://localhost/api/v1/users/all
http://localhost/api/v1/users/active
http://localhost/api/v1/users/inactive
http://localhost/api/v1/users/2001
http://localhost/api/v1/users/2002
http://localhost/api/v1/users/2003
Existe uma maneira de direcionar o NGINX para ignorar os parâmetros de URL? Sinta-se à vontade para me informar se esta é uma pergunta ingênua. Talvez eu esteja fazendo a pergunta errada.
Em vez disso, use
return
em vez derewrite
porque "a diretiva de reescrita pode retornar apenas o código 301 ou 302" . Para isso, crie umlocation
com uma expressão regular para capturar a solicitação específica uri.E se você quiser apenas descartar todas essas solicitações, retorne um status http 444 .
Exemplo: