Byť presmerovaní IIS CGI HTTP_PROXY hlavičky požiadavky

Príznaky

Použijete funkciu IIS rozhranie CGI (Common Gateway) Host spustiteľný program, ktorý pomocou niektorých knižnicu presmerovať žiadosti žiadosti môže nesprávne, na základe prítomnosti "PROXY" žiadosť hlavičky. Viaceré platformy webové aplikácie sú známe tejto knižnice. Okrem iného patria PHP, Python a ísť.

Príčina

CGI je rozhranie, ktoré umožňuje webovému serveru hostiteľa aplikácie ako spustiteľný procesy. Po prijatí požiadavky webový server, server spustí nový proces spracovania tejto žiadosti. Po dokončení požiadavky proces ukončí. Aby proces na prístup k údajom žiadosti, hlavičky sú zahrnuté ako premenné prostredia, ktoré majú "HTTP_" pridané-svoje meno. CGI procesov požiadavky, ktoré obsahujú hlavičku s názvom "Proxy" teda "HTTP_PROXY" premenné prostredia, ktoré majú rovnakú hodnotu ako hlavičky požiadavky.

CURL príkazového riadka a knižnice sa bežne používajú na povolenie rôznych aplikácií požiadavky na rôzne typy serverov, vrátane webových serverov. Knižnica môže byť nakonfigurovaný pomocou parametrov príkazového riadka alebo jeho parametre dokáže čítať z hostiteľského procesu premenné. "HTTP_PROXY" je jeden z mnohých parametrov konfigurácie, ktoré používajú oblúčik. "HTTP_PROXY" používa oblúčik odoslať požiadavku HTTP cez server proxy nakonfigurovaný.

Poznámka:  Je to nesúvisí s "HTTP_PROXY" ako hlavičky požiadavky klienta.

Pri cURL je umiestnený v rámci procesu CGI a že proces obsahuje premenné, ktoré sa nazýva "HTTP_PROXY", oblúčik používa jeho hodnotu na odoslanie požadovaných údajov cez HTTP proxy, ktorého hodnota je definovaný v premennej prostredia. Príčinou oblúčik predpokladá, že je "HTTP_PROXY" smernice konfigurácie a nie hlavičky požiadavky klienta.

Alternatívne riešenie

Tento problém obísť, nepoužívajte CGI na serveri so službou IIS. CGI je veľmi zastarané rozhranie, ktoré nahrádza novší a ďalšie súvisiace s výkonom. Konkrétne PHP, Python a Go mali nachádzať cez FastCGI v službe IIS. FastCGI premenné na klienta hlavičky a nemá problém. PHP, Avšak niektoré aplikácie môžu používať PHPs getenv() funkcia Načítať systémové premenné. Aj keď PHP nie hosťuje CGI proces, sa šíri CGI správanie aplikáciu hodnoty hlavičky požiadavky do údajov, ktoré sú k dispozícii na jeho getenv() funkciu. Používate PHP aplikácií, ktoré načíta HTTP_PROXY týmto spôsobom platia nasledovné mitigations vymazanie hodnoty hlavičky alebo zamietnutí žiadosti s hlavičkou PROXY.

Ak musíte použiť CGI z nejakého dôvodu, blokovať žiadosti, ktoré obsahujú hlavičky požiadavky s názvom "Proxy" alebo zrušte hodnota hlavičky.  Dôvodom je skutočnosť, že "Proxy" je štandardné hlavičky a prehľadávače všeobecne neodošle sa.

Blokovanie požiadavka obsahuje hlavičku Proxy (preferovaným riešením), spustite nasledujúci príkaz:

Appcmd nastaviť config /section:requestfiltering / + requestlimits.headerLimits. [hlavičky = proxy, sizelimit = "0"]
Poznámka:  Appcmd.exe sa zvyčajne cesta a sa nachádza v adresári %systemroot%\system32\inetsrv

Zrušte hodnota hlavičky, môžete použiť pravidlo URL Rewrite:

<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>


Poznámka: URL Rewrite je prevzatie doplnok IIS a nie je súčasťou predvolenej inštalácie IIS.

Potrebujete ďalšiu pomoc?

Rozšírte svoje zručnosti
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pripojiť k Microsoft insiderov chcú

Považujete poskytnuté informácie za užitočné?

Ďakujem za vaše pripomienky!

Ďakujeme vám za pripomienky. Pravdepodobne vám pomôže, ak vás spojíme s pracovníkom podpory pre Office.

×