보안을 강화하기 위해 모든 URL 매개변수를 무시합니다. 어떻게?

보안을 강화하기 위해 모든 URL 매개변수를 무시합니다. 어떻게?

NGINX 서버를 온라인에 연결하고 access.log일주일 후에 서버를 살펴보면 많은 URL 공격 시도를 발견할 수 있습니다. 매일, 언제든지.

그렇다면 모든 URL 매개변수를 거부해야 한다면 어떻게 될까요? 모든 쿼리 문자열이 자연스럽게 404 Not Found를 반환하는 rewrite것으로 정의되지 않은 항목과 일치하지 못하는 NGINX로 마스크되면 어떻게 될까요 ?rewrite

아니면 항상 존재하는 위치 블록 내에 순서대로 일련의 재작성을 수행합니까?

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대신에 사용하십시오 rewrite."rewrite 지시문은 코드 301 또는 302만 반환할 수 있습니다.". 이를 위해 location특정 요청 URI를 포착하는 정규식을 사용하여 생성합니다.

그리고 이러한 요청을 모두 삭제하려면 다음을 반환하세요.http 상태 444.

예:

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

관련 정보