Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Simptome

Când utilizați caracteristica IIS Common Gateway Interface (CGI) pentru a găzdui un program executabil care utilizează o bibliotecă de anumite să redirecționați cererile, solicitările pot misdirected pe baza prezenței de un antet de solicitare "PROXY". Mai multe platforme de aplicație web sunt cunoscute pentru a utiliza această bibliotecă. Acestea includ PHP, Python și Go, printre altele.

Cauza

CGI este o interfață care permite un server web gazdă aplicațiile care se execută ca executabil procese. Când o solicitare este primit de un server web, server începe un nou proces pentru a gestiona această solicitare singur. Atunci când solicitarea este terminată, procesul se închide. Pentru ca procesul să aibă acces la datele de solicitare, anteturile de solicitate sunt incluse ca variabilele de mediu care au "HTTP_" exprimat la numele lor. De aceea, procesele CGI pentru solicitările care conține un antet care este numit "Proxy" au o variabilă de mediu "HTTP_PROXY" care au aceeași valoare ca antet de solicitare.

Linie de comandă îndoire și Biblioteca sunt folosite pentru a activa diferite tipuri de aplicații pentru a face solicitări pentru diferite tipuri de servere, inclusiv servere web. Această bibliotecă pot fi configurate utilizând parametri de linie de comandă, sau se poate citi sale parametrii de configurare din proces gazdă variabilele de mediu. "HTTP_PROXY" este unul dintre multe parametrii de configurare care sunt utilizate de îndoire. "HTTP_PROXY" este utilizat de îndoire pentru a trimite o solicitare de HTTP prin proxy configurat.

Notă Aceasta este independent de la "HTTP_PROXY" ca reprezentare un antet de solicitare client.

Când îndoire este găzduită în cadrul unui proces de CGI, iar procesul conține o variabilă de mediu care este numit "HTTP_PROXY", îndoire utilizează valoarea pentru a trimite datele solicitate prin proxy HTTP a cărei valoare este specificat în variabila de mediu. Aceasta se întâmplă deoarece îndoire așteaptă ca "HTTP_PROXY" este o directivă de configurare și nu un antet de solicitare client.

Soluție

Pentru a rezolva această problemă, utilizați CGI pe un server care execută IIS. CGI este o interfață în mare măsură învechite care este înlocuită de interfețe mai noi și mai legate de performanță. Mai precis, PHP, Python și Go ar trebui să fie găzduit prin FastCGI pe IIS. FastCGI nu utilizează variabile de mediu pentru client anteturile de solicitate și nu are această problemă. Cu toate acestea pentru PHP, unele aplicații pot folosi PHPs getenv() pentru a prelua variabilele de mediu. Chiar și atunci când PHP nu găzduită în interiorul unui proces CGI, se reproduce comportamentul CGI de injectare valorile din antet solicitare în setul de date disponibile pentru funcția getenv() . Dacă utilizați o aplicație PHP care preia HTTP_PROXY în acest mod, următoarele mitigations golirea valoarea antet sau a respinge solicitările cu un antet de PROXY sunt efective.

Dacă trebuie să utilizați CGI pentru un motiv oarecare, bloca solicitările care conține un antet de solicitare denumit "Proxy" sau debifa valoarea de antet.  Aceasta se întâmplă deoarece "Proxy" nu este un nume de antet de solicitare standard browsere, în general, nu trimite.

Pentru a bloca o solicitare care conține un antet de Proxy (soluția preferată), executaţi următoarea linie de comandă:

appcmd setați config /section:requestfiltering / + requestlimits.headerLimits. [antet = proxy, sizelimit = '0']
Notă Appcmd.exe nu este de obicei în cale și poate fi găsit în directorul %systemroot%\system32\inetsrv

Pentru a goli valoarea de antet, se poate utiliza următoarea regulă rescriere 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>


Notă Rescriere URL este o descărcabile de completare pentru IIS și nu se află într-o instalare implicită de IIS.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×