Condividi tramite


Problemi di AutoProxy in WinHTTP

Considerare i problemi importanti seguenti quando si usa la funzionalità di reimpostazione automatica WinHTTP.

Attualmente è supportato un solo server proxy

WinHTTP non supporta attualmente 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 di nuovo l'opzione WINHTTP_OPTION_PROXY con il server proxy successivo nell'elenco e inviando di nuovo la richiesta.

Mitigazione dei rischi di 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 si trova il file PAC è stato compromesso, è possibile che il codice di script PAC sia dannoso. Pertanto, WinHTTP usa le precauzioni seguenti per proteggere il client:

  1. 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.

  2. **Windows Server 2003: **WinHttpGetProxyForUrl delega l'intera elaborazione WPAD a un servizio esterno out-of-process, il servizio Di individuazione automatica proxy Web WinHTTP, che viene eseguito con l'account utente predefinito del servizio locale con privilegi limitati.

  3. Windows XP con SP2 e Windows Server 2003: Non è consentito eseguire uno script PAC per più di 60 secondi, dopo il quale l'esecuzione dello script viene terminata.

  4. Windows XP con SP2 e Windows Server 2003: WinHTTP rifiuta i file PAC di dimensioni superiori a 1 MB. Un tipico file PAC è in genere di dimensioni non superiori a pochi kilobyte.

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 web proxy Web out-of-process esterno, 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 WinHttpGetProxyForUrl e WinHttpDetectAutoProxyConfigUrl bloccano le funzioni sincrone. Potrebbe essere che un particolare meccanismo di rilevamento automatico (ad esempio DHCP) sia molto più lento rispetto all'altro (ad esempio DNS). Se vengono specificati entrambi i flag di rilevamento automatico WINHTTP_AUTO_DETECT_TYPE_DHCP e WINHTTP_AUTO_DETECT_TYPE_DNS_A , 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ù chiamate WinHttpGetProxyForUrl , se possibile, per evitare il rilevamento e il download ripetuti di URL PAC. 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 di 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".