Problemi di Reimpostazione automatica in WinHTTP
Considerare i problemi importanti seguenti quando si usa la funzionalità di reimpostazione automatica WinHTTP.
Attualmente è supportato un solo server proxy
WinHTTP attualmente non supporta le configurazioni proxy che specificano più server proxy. Se WinHttpGetProxyForUrl restituisce una struttura WINHTTP_PROXY_INFO che contiene un elenco di server proxy, che l'applicazione imposta quindi sull'handle di richiesta usando l'opzione WINHTTP_OPTION_PROXY, WinHTTP usa solo il primo server proxy nell'elenco. Se il server proxy non è accessibile, WinHTTP non esegue il failover in nessun altro server proxy nell'elenco. Spetta all'applicazione gestire questo caso impostando nuovamente l'opzione WINHTTP_OPTION_PROXY con il server proxy successivo nell'elenco e inviando nuovamente la richiesta.
Mitigazione dei rischi per la sicurezza
L'elaborazione del file di configurazione automatica del proxy richiede l'esecuzione del codice script scaricato. Alcuni problemi di sicurezza da considerare: se il server in cui risiede il file PAC è stato compromesso, è possibile che il codice di script PAC sia dannoso. Di conseguenza, WinHTTP usa le precauzioni seguenti per proteggere il client:
Al codice script non è consentito creare un'istanza di qualsiasi oggetto ActiveX. Questo blocca molte funzionalità potenzialmente pericolose, ad esempio la possibilità di accedere ai file e di eseguire operazioni di I/O di rete.
**Windows Server 2003: **WinHttpGetProxyForUrl delega l'intera elaborazione WPAD a un servizio esterno out-of-process, il servizio individuazione automatica proxy Web WinHTTP, che viene eseguito con l'account utente predefinito del servizio locale con privilegi limitati.
Windows XP con SP2 e Windows Server 2003: uno script PAC non può essere eseguito per più di 60 secondi, dopo il quale l'esecuzione dello script viene terminata.
Windows XP con SP2 e Windows Server 2003: WinHTTP rifiuta i file PAC di dimensioni superiori a 1 MB. Un tipico file PAC non è in genere più di un paio di kilobyte di dimensioni.
Tenere presente che l'elaborazione del codice di script PAC richiede l'uso di COM, perché WinHTTP usa il componente Microsoft JScript per eseguire lo script. Se WinHTTP non può delegare l'elaborazione del protocollo WPAD a un servizio di individuazione automatica proxy Web esterno out-of-process, WinHttpGetProxyForUrl carica il runtime COM all'interno del processo dell'applicazione per la durata della chiamata. Se l'applicazione stessa usa già COM, questo non dovrebbe essere un problema.
Considerazioni sulle prestazioni
Il processo di rilevamento automatico può essere lento, possibilmente fino a diversi secondi. Le funzioni di WinHttpGetProxyForUr l e WinHttpDetectAutoProxyConfigUrl bloccano le funzioni sincrone. Potrebbe trattarsi di un particolare meccanismo di rilevamento automatico (ad esempio DHCP) molto più lento rispetto all'altro (ad esempio DNS). Se vengono specificati sia il WINHTTP_AUTO_DETECT_TYPE_DHCP che WINHTTP_AUTO_DETECT_TYPE_DNS_A flag di rilevamento automatico, WinHTTP usa prima DHCP, in base alla specifica WPAD. Se non viene individuato alcun URL PAC inviando una richiesta DHCP, WinHTTP tenta di individuare il file PAC in un indirizzo DNS noto.
WinHttpGetProxyForUrl usa il parametro handle di sessione WinHTTP per memorizzare nella cache il file PAC e i risultati del rilevamento automatico. È consigliabile usare lo stesso handle di sessione per più WinHttpGetProxyForUrl chiamate, se possibile, per evitare il rilevamento ripetuto dell'URL PAC e il download di file. Il file PAC viene memorizzato nella cache solo in memoria e viene rimosso quando l'applicazione chiude l'handle di sessione.
A causa dell'impatto sulle prestazioni dell'autoproxy, è consigliabile che solo le applicazioni client desktop o i servizi usino la funzionalità; Le applicazioni basate su server devono basarsi sull'amministratore del server usando l'utilità "ProxyCfg.exe".