Nginx - Cabeçalho de host falso

Nginx - Cabeçalho de host falso

Os aplicativos Django dependem do cabeçalho do host para determinados links, etc. Na minha configuração, tenho um aplicativo Django rodando atrás do nginx como proxy reverso (com um não padrão server_name)

De acordo com:

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

Por exemplo, mesmo que o Apache esteja configurado de forma que seu site Django seja servido a partir de um host virtual não padrão com o ServerName definido, ainda é possível que uma solicitação HTTP corresponda a esse host virtual e forneça um cabeçalho Host falso

Não consegui encontrar nenhuma informação sobre se ou como isso pode ser feito no nginx.

É realmente inseguro permitir cegamente no webapp dependendo do cabeçalho vindo do nginx?

Responder1

Para passar o Host:cabeçalho para o aplicativo com proxy reverso, adicione o seguinte ao seu bloco server/ :location

proxy_set_header Host $host;

Depende da configuração do host virtual nginx quais são os valores possíveis para $hosteventualmente.

Se o seu serverbloco for um default_serverbloco, significa que o bloco do servidor processará quaisquer solicitações enviadas a qualquer host virtual. Nesse caso, o valor do Hostcabeçalho se propaga para o servidor upstream.

Para evitar isso no default_servercenário, use esta versão:

proxy_set_header Host example.com;

onde example.comestá o seu nome de domínio.

Melhor ainda é configurar o nginx corretamente para que default_servero bloco sempre retorne 404, por exemplo, e um host virtual adequado com o nome correto seja usado.

informação relacionada