Ignorando todo e qualquer parâmetro de URL para aumentar a segurança. Como?

Ignorando todo e qualquer parâmetro de URL para aumentar a segurança. Como?

Qualquer pessoa que colocar um servidor NGINX online e analisá-lo access.loguma semana depois encontrará muitas tentativas de exploração de URL. Todos os dias, a qualquer hora.

E daí se eu rejeitasse todo e qualquer parâmetro de URL. E se cada string de consulta fosse mascarada com um NGINX rewriteque não correspondesse a nada não definido como rewriteretornando naturalmente um 404 Not Found?

Ou uma série de reescritas em ordem colocadas dentro deste 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 for uma pergunta ingênua. Talvez eu esteja fazendo a pergunta errada.

Responder1

Prefiro usar returnem vez de rewriteporque"a diretiva rewrite pode retornar apenas o código 301 ou 302". Para isso, crie um locationcom uma expressão regular para capturar o uri da solicitação específica.

E se você quiser apenas descartar todas essas solicitações, retorne umstatus http 444.

Exemplo:

server {
    # ...
    location ~* ^/api/v1/users/.*$ {
        return  444;
    }
}

informação relacionada