
Cualquiera que ponga un servidor NGINX en línea y lo mire access.log
una semana después encontrará que se están intentando muchas vulnerabilidades de URL. Todos los días, a cualquier hora.
¿Y qué pasaría si rechazara todos y cada uno de los parámetros de URL? ¿Qué pasaría si cada cadena de consulta estuviera enmascarada con un NGINX rewrite
que no coincidiera con nada que no estuviera definido y rewrite
devolviera naturalmente un 404 No encontrado?
¿O una serie de reescrituras en orden colocadas dentro de este bloque de ubicación siempre 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
¿Hay alguna manera de indicarle a NGINX que ignore los parámetros de URL? No dude en hacerme saber si se trata de una pregunta ingenua. Quizás estoy haciendo la pregunta equivocada.
Respuesta1
Prefiero usar return
en lugar de rewrite
porque"La directiva de reescritura sólo puede devolver el código 301 o 302". Para esto, cree una location
expresión regular para capturar el uri de solicitud específico.
Y si solo desea descartar todas estas solicitudes, devuelva unestado http 444.
Ejemplo:
server {
# ...
location ~* ^/api/v1/users/.*$ {
return 444;
}
}