Игнорирование любых параметров URL для усиления безопасности. Как?

Игнорирование любых параметров URL для усиления безопасности. Как?

Любой, кто запускает сервер NGINX и смотрит на него access.logнеделю спустя, обнаружит множество попыток взлома URL. Каждый день, в любое время.

Так что, если я должен был отклонить любые и все параметры URL. Что, если каждая строка запроса была бы замаскирована NGINX, rewriteкоторый не смог бы сопоставить ничего, что не определено как rewriteестественно возвращающее 404 Not Found?

Или серия переписываний, расположенных в порядке, который всегда присутствует в этом блоке локаций?

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

Есть ли способ заставить NGINX игнорировать параметры URL? Не стесняйтесь, дайте мне знать, если это наивный вопрос. Возможно, я задаю неправильный вопрос.

решение1

Лучше использовать returnвместо rewritebecause«директива перезаписи может возвращать только код 301 или 302». Для этого создайте locationс регулярным выражением, чтобы перехватить определенный URI запроса.

И если вы просто хотите отказаться от всех этих запросов, вернитеhttp-статус 444.

Пример:

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

Связанный контент