Es posible que las solicitudes de encabezado HTTP_PROXY CGI de IIS de redirijan

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 3179800
Síntomas
Cuando utiliza la característica Common Gateway Interface (CGI) de IIS para alojar un programa ejecutable que utilice una determinada biblioteca para redirigir las solicitudes, las solicitudes pueden ser desviadas según la presencia de un encabezado de solicitud "PROXY". Varias plataformas de aplicaciones web suelen utilizar esta biblioteca. Entre ellas se incluyen PHP, Python y Go, entre otras.
Causa
CGI es una interfaz que permite a un servidor web para alojar aplicaciones que se ejecutan como procesos ejecutables. Cuando un servidor web recibe una solicitud, el servidor inicia un nuevo proceso para controlar dicha solicitud única. Cuando se complete la solicitud, se cierra el proceso. Para que el proceso tenga acceso a los datos de solicitud, los encabezados de solicitud se incluyen como variables de entorno que tienen "HTTP_" antepuesto a su nombre. Por lo tanto, los procesos CGI para las solicitudes que contienen un encabezado denominado "Proxy" tienen una variable de entorno "HTTP_PROXY" que tienen el mismo valor que el encabezado de solicitud.

La línea de comandos de rizo y libraryare utilizan para enablevarious tipos de aplicaciones para realizar solicitudes a distintos tipos de servidores, incluidos servidores web. Esta biblioteca se puede configurar mediante los parámetros de línea de comandos, o puede leer sus parámetros de configuración de las variables de entorno de proceso de host. "HTTP_PROXY" es uno de los numerosos parámetros de configuración utilizados por doblez. cURL utiliza "HTTP_PROXY" para enviar una solicitud HTTP a través del proxy configurado.

Nota: Esto está relacionado con "HTTP_PROXY" como la representación de un encabezado de solicitud de cliente.

Cuando cURL está alojado dentro de un proceso CGI y ese proceso contiene una variable de entorno denominada "HTTP_PROXY", enrollar utiliza su valor para los datos a través del proxy HTTP cuyo valor se especifica en la variable de entorno sendrequested. Esto ocurre porque cURL espera que "HTTP_PROXY" sea una directiva de configuración y no un encabezado de solicitud de cliente.
Solución
Para evitar este problema, no utilice CGI en un servidor que está ejecutando IIS. CGI es una interfaz obsoleta en gran medida que es reemplazada por las interfaces más recientes y más relacionados con el rendimiento. En concreto, PHP, Python y Go deben estar alojado mediante FastCGI en IIS. FastCGI no utiliza las variables de entorno para los encabezados de la solicitud de cliente y no tiene este problema. Sin embargo para PHP, algunas aplicaciones pueden utilizar la función de getenv() PHPs para recuperar las variables de entorno. Incluso cuando PHP no está hospedado dentro de un proceso CGI, replica el comportamiento CGI insertando los valores de encabezado de solicitud en el conjunto de datos disponibles para la función getenv(). Si utiliza una aplicación PHP que recupera HTTP_PROXY de esta manera, las mitigaciones de borrar el valor del encabezado o el rechazo de solicitudes con un encabezado PROXY siguientes son efectivas.

Si tiene que usar CGI por algún motivo, bloquee las solicitudes que contienen un encabezado denominado a "Proxy" o borre el valor del encabezado. Esto es porque "Proxy" no es un nombre de encabezado de solicitud estándar y los exploradores generalmente no lo enviarán.

Para bloquear una solicitud que contiene un encabezado de Proxy (la solución preferida), ejecute la siguiente línea de comando:
appcmd set config /section:requestfiltering / + requestlimits.headerLimits. [header = 'proxy', sizelimit = '0']

Nota: El appcmd.exe no está normalmente en la ruta de acceso y puede encontrarse en el directorio %systemroot%\system32\inetsrv

Para borrar el valor del encabezado, puede utilizar la regla de reescritura de dirección URL siguiente:
<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: URL Rewrite es un complemento descargable de IIS y no está incluido en una instalación predeterminada de IIS.

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 3179800 - Última revisión: 08/06/2016 20:56:00 - Revisión: 3.0

Windows 10, Windows 10 Version 1511, 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 Standard, Windows Server 2012 Essentials, Windows Server 2012 Foundation, Windows Server 2008 R2 Service Pack 1, Windows 7 Service Pack 1, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 2

  • atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability kbmt KB3179800 KbMtes
Comentarios