nginx - está usando $ http_host perigoso?

4

De minha própria resposta , tive que substituir $host por $http_host para resolver meu problema. .

Mas isso é seguro?

Parece que todo $http_host está fazendo é expor todo o HOST do cabeçalho. A explicação aqui ainda não está clara para mim ...

Alguém tem alguma idéia de por que $http_host seria mais perigoso?

EDITAR

Na verdade, esta é minha terceira edição ... Eu deveria reconsiderar minha posição sobre isso depois de ler isto: link

Eu não tenho certeza de como o nginx reage a isso, mas vocês acham que o nginx também entraria em linha com o resultado do teste de Chris, que não é seguro?

Em que circunstâncias você pode pensar em uma maneira de explorar ao usar $ http_host? Além disso, por que é importante remover o número da porta?

Eu entendo que é possível comprometer a rede, enviar alguns Host: fake or old ip e, em seguida, executar um ataque de religação ao ler em outro lugar?

    
por CppLearner 27.05.2012 / 05:54

2 respostas

4

$host é simplesmente $http_host com algum processamento (removendo o número da porta e em minúsculas) e um valor padrão (do server_name ), portanto não há menos "exposição" ao cabeçalho Host enviado pelo cliente ao usar $http_host . Não há perigo nisso.

    
por 27.05.2012 / 06:00
0

É necessário verificar todos os valores de cabeçalho na aplicação. Embora o nginx possa fazer alguma proteção ao seu aplicativo da web, você não deve confiar apenas nele.

Acredito que seja possível escrever uma aplicação Web vulnerável ao abuso de cabeçalho do host por meio de $ host e $ http_host, mas não é uma razão para evitar seu uso na configuração do nginx.

    
por 27.05.2012 / 06:13

Tags