Problemas de AutoProxy en WinHTTP
Tenga en cuenta los siguientes problemas importantes al usar la característica Autoproxy de WinHTTP.
Actualmente solo se admite un servidor proxy
WinHTTP no admite actualmente configuraciones de proxy que especifican más de un servidor proxy. Si WinHttpGetProxyForUrl devuelve una estructura de WINHTTP_PROXY_INFO que contiene una lista de servidores proxy, que la aplicación establece en el identificador de solicitud mediante la opción WINHTTP_OPTION_PROXY , WinHTTP solo usa el primer servidor proxy de la lista. Si ese servidor proxy no es accesible, WinHTTP no conmuta por error a ninguno de los demás servidores proxy de la lista. Es necesario que la aplicación controle este caso estableciendo de nuevo la opción WINHTTP_OPTION_PROXY con el siguiente servidor proxy de la lista y reenviando la solicitud.
Mitigación de riesgos de seguridad
El procesamiento del archivo de configuración automática del proxy requiere ejecutar código de script descargado. Algunos problemas de seguridad que se deben tener en cuenta: si el servidor en el que reside el archivo PAC se ha puesto en peligro, es posible que el código de script pac sea malintencionado. Por lo tanto, WinHTTP usa las siguientes precauciones para proteger al cliente:
Se impide que el código de script cree instancias de los objetos ActiveX. Esto bloquea una gran cantidad de funcionalidades potencialmente peligrosas, como la capacidad de acceder a archivos y realizar E/S de red.
**Windows Server 2003: **WinHttpGetProxyForUrl delega todo el procesamiento WPAD en un servicio externo fuera de proceso, el servicio de detección automática de proxy web WinHTTP, que se ejecuta bajo la cuenta de usuario integrada del servicio local con pocos privilegios.
Windows XP con SP2 y Windows Server 2003: No se permite ejecutar un script PAC durante más de 60 segundos, después del cual finaliza la ejecución del script.
Windows XP con SP2 y Windows Server 2003: WinHTTP rechaza los archivos PAC de más de 1 MB. Normalmente, un archivo PAC típico no es más de unos pocos kilobytes de tamaño.
Tenga en cuenta que el procesamiento del código de script PAC requiere el uso de COM, ya que WinHTTP usa el componente de Microsoft JScript para ejecutar el script. Si WinHTTP no puede delegar el procesamiento del protocolo WPAD en un servicio externo de detección automática de proxy web fuera de proceso, WinHttpGetProxyForUrl carga el tiempo de ejecución COM dentro del proceso de aplicación durante la llamada. Si la propia aplicación ya usa COM, esto no debería ser un problema.
Consideraciones de rendimiento
El proceso de detección automática puede ser lento, posiblemente siempre y cuando haya varios segundos. Las funciones WinHttpGetProxyForUrl y WinHttpDetectAutoProxyConfigUrl bloquean funciones sincrónicas. Podría ser que un mecanismo de detección automática determinado (como DHCP) sea mucho más lento que el otro (como DNS). Si se especifican las marcas de WINHTTP_AUTO_DETECT_TYPE_DHCP y WINHTTP_AUTO_DETECT_TYPE_DNS_A detección automática, WinHTTP usa PRIMERO DHCP, de acuerdo con la especificación WPAD. Si no se detecta ninguna dirección URL de PAC mediante la emisión de una solicitud DHCP, WinHTTP intenta localizar el archivo PAC en una dirección DNS conocida.
WinHttpGetProxyForUrl usa el parámetro de identificador de sesión winHTTP para almacenar en caché el archivo PAC y los resultados de la detección automática. Es mejor usar el mismo identificador de sesión para varias llamadas WinHttpGetProxyForUrl si es posible para evitar la detección repetida de direcciones URL de PAC y la descarga de archivos. El archivo PAC solo se almacena en memoria caché y se descarta cuando la aplicación cierra el identificador de sesión.
Debido al impacto en el rendimiento de autoproxy, se recomienda que solo las aplicaciones cliente de escritorio o los servicios usen la característica; Las aplicaciones basadas en servidor deben confiar en el administrador del servidor mediante la utilidad "ProxyCfg.exe".