Nginx - 가짜 호스트 헤더

Nginx - 가짜 호스트 헤더

Django 앱은 특정 링크 등에 대해 호스트 헤더를 사용합니다. 내 설정에는 nginx 뒤에서 역방향 프록시(기본값이 아님 server_name) 로 실행되는 django 앱이 있습니다.

에 따르면:

https://docs.djangoproject.com/en/3.1/topics/security/#host-header-validation

예를 들어, Django 사이트가 ServerName이 설정된 기본이 아닌 가상 호스트에서 제공되도록 Apache가 구성된 경우에도 HTTP 요청이 이 가상 호스트와 일치하고 가짜 호스트 헤더를 제공할 수 있습니다.

nginx에서 수행할 수 있는지 또는 어떻게 수행할 수 있는지에 대한 정보를 찾을 수 없습니다.

nginx에서 오는 헤더에 의존하는 웹앱에서 맹목적으로 허용하는 것이 정말 안전하지 않습니까?

답변1

Host:헤더를 역방향 프록시 앱으로 전달하려면 server/ location블록에 다음을 추가하세요.

proxy_set_header Host $host;

결국 가능한 값은 nginx 가상 호스트 구성에 따라 다릅니다 $host.

server블록이 블록 인 경우 default_server서버 블록이 가상 호스트로 전송된 모든 요청을 처리한다는 의미입니다. 이 경우 헤더 값이 Host업스트림 서버로 전파됩니다.

시나리오에서 이를 방지하려면 default_server다음 버전을 사용하십시오.

proxy_set_header Host example.com;

example.com당신의 도메인 이름은 어디에 있나요?

default_server더 나은 방법은 블록이 항상 404를 반환하고 올바른 이름을 가진 적절한 가상 호스트가 사용되도록 nginx를 적절하게 구성하는 것입니다 .

관련 정보