AutoProxy-Probleme in WinHTTP
Beachten Sie bei der Verwendung des WinHTTP-Autoproxyfeatures die folgenden wichtigen Probleme.
Derzeit wird nur ein Proxyserver unterstützt.
WinHTTP unterstützt derzeit keine Proxykonfigurationen, die mehrere Proxyserver angeben. Wenn WinHttpGetProxyForUrl eine WINHTTP_PROXY_INFO Struktur zurückgibt, die eine Liste von Proxyservern enthält, die die Anwendung dann mithilfe der Option WINHTTP_OPTION_PROXY für das Anforderungshandle festlegt, verwendet WinHTTP nur den ersten Proxyserver in der Liste. Wenn auf diesen Proxyserver nicht zugegriffen werden kann, führt WinHTTP kein Failover auf einen der anderen Proxyserver in der Liste durch. Es liegt bei der Anwendung, diesen Fall zu behandeln, indem Sie die Option WINHTTP_OPTION_PROXY erneut mit dem nächsten Proxyserver in der Liste festlegen und die Anforderung erneut senden.
Risikominderung bei Sicherheitsrisiken
Für die Verarbeitung der Proxy-Autokonfigurationsdatei muss der heruntergeladene Skriptcode ausgeführt werden. Einige Sicherheitsbedenken müssen berücksichtigt werden: Wenn der Server, auf dem sich die PAC-Datei befindet, kompromittiert wurde, ist der PAC-Skriptcode möglicherweise böswillig. Daher verwendet WinHTTP die folgenden Vorsichtsmaßnahmen zum Schutz des Clients:
Der Skriptcode wird daran gehindert, ActiveX-Objekte zu instanziieren. Dadurch werden viele potenziell gefährliche Funktionen blockiert, z. B. die Möglichkeit, auf Dateien zuzugreifen und Netzwerk-E/A auszuführen.
**Windows Server 2003: **WinHttpGetProxyForUrl delegiert die gesamte WPAD-Verarbeitung an einen externen Out-of-Process-Dienst, den WinHTTP Web Proxy Auto-Discovery-Dienst, der unter dem integrierten Benutzerkonto mit niedriger Privilegierten lokalen Dienst ausgeführt wird.
Windows XP mit SP2 und Windows Server 2003: Ein PAC-Skript darf nicht länger als 60 Sekunden ausgeführt werden, nachdem die Skriptausführung beendet wurde.
Windows XP mit SP2 und Windows Server 2003: WinHTTP lehnt PAC-Dateien ab, die größer als 1 MB sind. Eine typische PAC-Datei ist in der Regel nicht mehr als ein paar Kilobyte groß.
Beachten Sie, dass die Verarbeitung des PAC-Skriptcodes die Verwendung von COM erfordert, da WinHTTP die Microsoft JScript-Komponente zum Ausführen des Skripts verwendet. Wenn WinHTTP die WPAD-Protokollverarbeitung nicht an einen externen, out-of-process Web Proxy Auto-Discovery-Dienst delegieren kann, WinHttpGetProxyForUrl die COM-Laufzeit innerhalb des Anwendungsprozesses für die Dauer des Aufrufs lädt. Wenn die Anwendung selbst bereits COM verwendet, sollte dies kein Problem sein.
Leistungsüberlegungen
Der Prozess der automatischen Erkennung kann langsam sein, möglicherweise so lange wie mehrere Sekunden. Die WinHttpGetProxyForUrl und WinHttpDetectAutoProxyConfigUrl Funktionen blockieren synchrone Funktionen. Es könnte sein, dass ein bestimmter automatischer Erkennungsmechanismus (z. B. DHCP) viel langsamer ist als der andere (z. B. DNS). Wenn sowohl das WINHTTP_AUTO_DETECT_TYPE_DHCP- als auch WINHTTP_AUTO_DETECT_TYPE_DNS_A Automatischerkennungsflaggen angegeben sind, verwendet WinHTTP zuerst DHCP, gemäß der WPAD-Spezifikation. Wenn keine PAC-URL durch Ausgeben einer DHCP-Anforderung ermittelt wird, versucht WinHTTP, die PAC-Datei unter einer bekannten DNS-Adresse zu finden.
WinHttpGetProxyForUrl verwendet den WinHTTP-Sitzungshandle-Parameter zum Zwischenspeichern der PAC-Datei und der Ergebnisse der automatischen Erkennung. Es empfiehlt sich, dasselbe Sitzungshandle für mehrere WinHttpGetProxyForUrl Aufrufe zu verwenden, um wiederholte PAC-URL-Erkennung und Dateidownloads zu vermeiden. Die PAC-Datei ist nur im Arbeitsspeicher zwischengespeichert und wird verworfen, wenn die Anwendung das Sitzungshandle schließt.
Aufgrund der Leistungsauswirkungen von AutoProxy wird empfohlen, dass nur Desktopclientanwendungen oder -dienste das Feature verwenden; Serverbasierte Anwendungen sollten sich auf den Serveradministrator verlassen, indem das Hilfsprogramm "ProxyCfg.exe" verwendet wird.