Si applica a
Windows 10 Windows 10, version 1511, all editions Windows Server 2012 R2 Datacenter Windows Server 2012 R2 Standard Windows Server 2012 R2 Essentials Windows Server 2012 R2 Foundation Windows 8.1 Enterprise Windows 8.1 Pro Windows 8.1 Windows RT 8.1 Windows Server 2012 Datacenter Windows Server 2012 Datacenter Windows Server 2012 Standard Windows Server 2012 Standard Windows Server 2012 Essentials Windows Server 2012 Foundation Windows Server 2012 Foundation Windows Server 2008 R2 Service Pack 1 Windows Server 2008 R2 Datacenter Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Standard Windows Server 2008 R2 Web Edition Windows Server 2008 R2 Foundation Windows 7 Service Pack 1 Windows 7 Ultimate Windows 7 Enterprise Windows 7 Professional Windows 7 Home Premium Windows 7 Home Basic Windows 7 Starter Windows Server 2008 Service Pack 2 Windows Server 2008 Datacenter Windows Server 2008 Enterprise Windows Server 2008 Standard Windows Server 2008 Web Edition Windows Server 2008 Foundation Windows Server 2008 for Itanium-Based Systems Windows Vista Service Pack 2 Windows Vista Ultimate Windows Vista Enterprise Windows Vista Business Windows Vista Home Premium Windows Vista Home Basic Windows Vista Starter

Sintomi

Quando si utilizza la funzionalità di IIS Common Gateway Interface (CGI) per ospitare un programma eseguibile che utilizza una determinata libreria di reindirizzare le richieste, le richieste possono essere indirizzate in base alla presenza di un'intestazione di richiesta di "PROXY". Utilizzare questa libreria noto diverse piattaforme di applicazioni web. Ad esempio PHP, Python e Vai, tra gli altri.

Causa

CGI è un'interfaccia che consente a un server web per ospitare le applicazioni che vengono eseguiti come processi eseguibili. Quando viene ricevuta una richiesta da un server web, il server viene avviato un nuovo processo per gestire tale richiesta singola. Quando la richiesta viene completata, il processo termina. Affinché il processo di accedere ai dati della richiesta, le intestazioni di richiesta sono incluse come le variabili di ambiente con "HTTP _" anteposto al nome. Pertanto, i processi CGI per le richieste che contengono un'intestazione denominato "Proxy" sono una variabile di ambiente "HTTP_PROXY" che hanno lo stesso valore di intestazione della richiesta.La riga di comando cURL e libreria sono utilizzate per attivare i vari tipi di applicazioni per effettuare richieste in vari tipi di server, inclusi i server web. Questa libreria può essere configurata utilizzando i parametri della riga di comando oppure è possibile leggere i parametri di configurazione le variabili di ambiente del processo host. "HTTP_PROXY" è uno dei molti parametri di configurazione utilizzati dalla punta arricciata. "HTTP_PROXY" viene utilizzato dalla punta arricciata per inviare una richiesta HTTP tramite il proxy configurato.Nota: Ciò è correlato "HTTP_PROXY" come rappresentazione di un'intestazione di richiesta del client.Quando curvatura è ospitato all'interno di un processo CGI, e tale processo contiene una variabile di ambiente è denominata "HTTP_PROXY", il relativo valore curvatura utilizza per inviare i dati richiesti tramite il proxy HTTP, il cui valore è specificato nella variabile di ambiente. Ciò si verifica in quanto punta arricciata prevede che "HTTP_PROXY" è una direttiva di configurazione e non un'intestazione di richiesta del client.

Soluzione alternativa

Per risolvere questo problema, non utilizzare CGI in un server che esegue IIS. CGI è un'interfaccia in gran parte obsoleta che viene sostituita dalle interfacce più recente e più correlati alle prestazioni. In particolare, PHP, Python e Go deve essere ospitato tramite FastCGI in IIS. FastCGI non utilizza le variabili di ambiente per le intestazioni di richiesta client e non dispone di questo problema. Tuttavia per PHP, alcune applicazioni possono utilizzare PHPs getenv() funzione per recuperare le variabili di ambiente. Anche quando PHP non è ospitato all'interno di un processo CGI, replicare il comportamento CGI inserendo i valori dell'intestazione di richiesta nella serie di dati disponibili per la funzione getenv() . Se si utilizza un'applicazione PHP che recupera HTTP_PROXY in questo modo, la seguente attenuazioni di cancellare il valore dell'intestazione o il rifiuto delle richieste con un'intestazione PROXY sono efficaci.Se è necessario utilizzare CGI per qualche motivo, bloccare le richieste che contengono un'intestazione di richiesta denominata "Proxy" o cancellare il valore dell'intestazione.  Ciò avviene perché "Proxy" non è un nome di intestazione di richiesta standard e i browser generalmente non invierà ad esso.Per bloccare una richiesta contenente un'intestazione Proxy (la soluzione migliore), eseguire la seguente riga di comando:

appcmd set config /section:requestfiltering / + requestlimits.headerLimits. [intestazione = 'proxy' sizelimit = "0"]Nota: Il appcmd.exe non è in genere nel percorso ed è reperibile nella directory %systemroot%\system32\inetsrvPer cancellare il valore dell'intestazione, è possibile utilizzare la seguente regola di riscrittura degli 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: La riscrittura URL è un componente aggiuntivo scaricabile di IIS e non è incluso in un'installazione predefinita di IIS.

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.