Pedidos de cabeçalho do IIS CGI proxy_http poderão ser redireccionados

Sintomas

Quando utiliza a funcionalidade do IIS Common Gateway Interface (CGI) para hospedar um programa executável que utilizar uma biblioteca de determinados para redirecionar solicitações, podem ser ilegítimos pedidos baseado na presença de um cabeçalho de pedido de "PROXY". Várias plataformas de aplicação da web são conhecidas para utilizar esta biblioteca. Estas incluem PHP, Python e ir, entre outros.

Causa

CGI é uma interface que permite a um servidor web para hospedar aplicações que são executados como processos executáveis. Quando é recebido um pedido por um servidor web, o servidor inicia um novo processo para processar este pedido único. Quando o pedido estiver concluído, o processo termina. Na ordem para o processo ter acesso aos dados do pedido, os cabeçalhos de pedido são incluídos como variáveis de ambiente que tenham "HTTP _" pré-concebido para o respectivo nome. Assim, os processos CGI para pedidos que contêm um cabeçalho com o nome "Proxy" têm uma variável de ambiente "Proxy_http" que tenham o mesmo valor que o cabeçalho do pedido.

A linha de comandos de Laço e biblioteca são normalmente utilizados para permitir vários tipos de aplicações para efectuar pedidos para vários tipos de servidores, incluindo servidores web. Esta biblioteca pode ser configurada através da utilização de parâmetros de linha de comandos ou possa ler os respectivos parâmetros de configuração partir as variáveis de ambiente do processo de anfitrião. "Proxy_http" é um dos vários parâmetros de configuração que são utilizados pelo Laço. "Proxy_http" é utilizada pelo Laço para enviar um pedido HTTP através do proxy configurado.

Nota Isto está relacionado com "Proxy_http" como a representação de um cabeçalho de pedido de cliente.

Quando está alojado Laço dentro de um processo CGI e que o processo contém uma variável de ambiente é denominada "Proxy_http", o laço utiliza o respectivo valor para enviar dados pedidos através do proxy HTTP cujo valor é especificado na variável de ambiente. Isto ocorre porque o laço espera que "Proxy_http" é uma directiva de configuração e não um cabeçalho de pedido de cliente.

Solução alternativa

Para contornar este problema, não utilize CGI num servidor que está a executar o IIS. CGI é uma interface obsoleta em grande medida, que é substituída por interfaces mais recentes e mais relacionadas com o desempenho. Especificamente, PHP, Python e ir devem ser hospedado através de FastCGI no IIS. FastCGI não utilizar variáveis de ambiente para os cabeçalhos de pedido de cliente e não tem este problema. No entanto para PHP, algumas aplicações poderão utilizar a função de getenv() de PHPs para obter as variáveis de ambiente. Mesmo quando PHP não estiver alojado no interior de um processo CGI, replica o comportamento CGI por injecção os valores de cabeçalho de pedido para o conjunto de dados disponíveis para a função getenv() . Se utilizar uma aplicação de PHP que obtém proxy_http desta forma, as seguintes atenuações de desmarcar o valor do cabeçalho ou rejeitar os pedidos com um cabeçalho PROXY são eficazes.

Se tiver de utilizar CGI por algum motivo, ou bloquear pedidos que contêm um cabeçalho de pedido com o nome "Proxy" ou desmarque o valor do cabeçalho.  Isto acontece porque "Proxy" não é um nome de cabeçalho do pedido padrão e browsers serão geralmente não enviá-lo.

Para bloquear um pedido que contém um cabeçalho Proxy (a solução preferencial), execute o seguinte comando:

appcmd set config /section:requestfiltering / + requestlimits.headerLimits. [cabeçalho = 'proxy', sizelimit = '0']
Nota O appcmd.exe não é normalmente no caminho e podem ser encontrados no directório %systemroot%\system32\inetsrv.

Para limpar o valor do cabeçalho, pode utilizar a seguinte regra de reescrita de URL:

<system.webServer>    <rewrite>
<rules>
<rule name="Erase HTTP_PROXY" patternSyntax="Wildcard">
<match url="*.*" />
<serverVariables>
<set name="HTTP_PROXY" value="" />
</serverVariables>
<action type="None" />
</rule>
</rules>
</rewrite>
</system.webServer>


Nota Reescrever o URL é um suplemento transferível do IIS e não está incluído numa instalação predefinida IIS.

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×