Sdílet prostřednictvím


Problémy s automatickým proxy serverem ve službě WinHTTP

Při používání funkce autoproxy WinHTTP zvažte následující důležité problémy.

Aktuálně se podporuje pouze jeden proxy server.

WinHTTP v současné době nepodporuje konfigurace proxy serveru, které určují více než jeden proxy server. Pokud WinHttpGetProxyForUrl vrátí WINHTTP_PROXY_INFO strukturu, která obsahuje seznam proxy serverů, které aplikace potom nastaví na popisovač požadavku pomocí možnosti WINHTTP_OPTION_PROXY, winHTTP použije pouze první proxy server v seznamu. Pokud tento proxy server není přístupný, služba WinHTTP nepředpokládá převzetí služeb při selhání na žádné z ostatních proxy serverů v seznamu. Je na aplikaci, aby tento případ zpracovala tak, že znovu nastavíte možnost WINHTTP_OPTION_PROXY s dalším proxy serverem v seznamu a znovu odešlete požadavek.

Zmírnění rizik zabezpečení

Zpracování automatického konfiguračního souboru proxy vyžaduje spuštění staženého kódu skriptu. Některé aspekty zabezpečení, které je potřeba vzít v úvahu: Pokud došlo k ohrožení zabezpečení serveru, na kterém se nachází soubor PAC, je možné, že kód skriptu PAC je škodlivý. Služba WinHTTP proto k ochraně klienta používá následující opatření:

  1. Kód skriptu není možné vytvořit instanci všech objektů ActiveX. To blokuje spoustu potenciálně nebezpečných funkcí, jako je schopnost přistupovat k souborům a provádět vstupně-výstupní operace sítě.

  2. **Windows Server 2003: **WinHttpGetProxyForUrl deleguje celé zpracování WPAD na externí službu mimo proces, službu automatického zjišťování webového proxy serveru WinHTTP, která běží pod integrovaným uživatelským účtem místní služby s nízkou úrovní oprávnění.

  3. systému Windows XP s aktualizací SP2 a Windows Server 2003: skript PAC nesmí být spuštěn po dobu delší než 60 sekund, po kterém je spuštění skriptu ukončeno.

  4. Windows XP s aktualizací SP2 a Windows Server 2003: WinHTTP odmítne soubory PAC větší než 1 MB. Typický soubor PAC obvykle není větší než několik kilobajtů.

Mějte na paměti, že zpracování kódu skriptu PAC vyžaduje použití modelu COM, protože WinHTTP ke spuštění skriptu používá komponentu Microsoft JScript. Pokud WinHTTP nemůže delegovat zpracování protokolu WPAD na externí, mimoprocesovou službu automatického zjišťování webového proxy serveru, WinHttpGetProxyForUrl načte modul runtime COM v rámci procesu aplikace po dobu trvání volání. Pokud samotná aplikace již používá com, nemělo by se jednat o problém.

Důležité informace o výkonu

Proces automatického zjišťování může být pomalý, možná i několik sekund. Funkce WinHttpGetProxyForUrl a WinHttpDetectAutoProxyConfigUrl jsou blokující synchronní funkce. Může to být, že jeden konkrétní mechanismus automatického zjišťování (například DHCP) je mnohem pomalejší než druhý (například DNS). Pokud jsou zadány příznaky WINHTTP_AUTO_DETECT_TYPE_DHCP i WINHTTP_AUTO_DETECT_TYPE_DNS_A automatického zjišťování, služba WinHTTP nejprve použije protokol DHCP v souladu se specifikací WPAD. Pokud se pomocí požadavku DHCP nezjistí žádná adresa URL PAC, pokusí se WinHTTP najít soubor PAC na dobře známé adrese DNS.

WinHttpGetProxyForUrl používá parametr popisovače relace WinHTTP k ukládání souboru PAC do mezipaměti a výsledků automatického zjišťování. Nejlepší je použít stejný popisovač relace pro více WinHttpGetProxyForUrl volání, pokud je to možné, aby se zabránilo opakovanému zjišťování adres URL PAC a stahování souborů. Soubor PAC je uložen pouze v paměti a je zahozen, když aplikace zavře popisovač relace.

Z důvodu dopadu automatického testování na výkon se doporučuje, aby tuto funkci používaly pouze desktopové klientské aplikace nebo služby; serverové aplikace by měly spoléhat na správce serveru pomocí nástroje "ProxyCfg.exe".