Una regola PAC per i nomi brevi può aggirare il tuo proxy
Capisci perché un nome host senza punto e la sua forma completamente qualificata possono scegliere percorsi diversi nello stesso script PAC.
Uno script PAC riceve il nome host dall'URL. dashboard non diventa automaticamente dashboard.example.internal prima del confronto:
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
return "PROXY 203.0.113.10:8080";
}Usa un vero endpoint HTTP al posto dell'indirizzo di documentazione; la lista dei proxy HTTP fornisce candidati per i test verso una destinazione pubblica dove quel percorso è consentito. In questo script il nome breve restituisce deliberatamente DIRECT; il nome completamente qualificato raggiunge il ramo proxy. «Plain hostname» significa una grafia senza punto, non la constatazione che l'host si trovi su una rete locale affidabile.
Se la politica desiderata è un unico dominio interno, confronta quel dominio invece di ogni nome breve. dnsDomainIs e shExpMatch hanno input e semantica dei pattern diversi. Un controllo di suffisso per .example.internal non include la radice esatta example.internal; includi esplicitamente quel caso quando è voluto. Un pattern in stile shell non è una sottorete IP né un'espressione regolare.
Confronta il risultato dello script per il nome breve, il nome completamente qualificato, un host pubblico non correlato e qualsiasi radice di dominio prevista. Questo verifica la selezione delle regole senza connettersi al proxy. Ispeziona la prima regola che restituisce quando un ampio ramo DIRECT impedisce di provare un endpoint altrimenti raggiungibile.
Usa un confronto di nomi quando esprime la politica; gli helper DNS aggiungono le proprie risoluzioni e ritardi. Tieni anche l'esclusione locale implicita del browser separata dallo script. Un controllo localhost non può sostituire la grafia reale della destinazione pubblica o interna.