En PAC-regel for korte navne kan omgå din proxy
Forstå, hvorfor et værtsnavn uden punktum og dets fuldt kvalificerede form kan vælge forskellige ruter i det samme PAC-script.
Et PAC-script modtager værtsnavnet fra URL’en. dashboard bliver ikke automatisk dashboard.example.internal før matchningen:
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
return "PROXY 203.0.113.10:8080";
}Brug et rigtigt HTTP-endpoint i stedet for dokumentationsadressen; HTTP-proxy-listen giver kandidater til test af offentlige destinationer, hvor den rute er tilladt. I dette script returnerer det korte navn bevidst DIRECT; det fuldt kvalificerede navn når proxy-grenen. “Plain hostname” betyder en stavemåde uden punktum, ikke en konstatering af, at værten er på et betroet lokalt netværk.
Hvis den ønskede politik er ét internt domæne, så match dét domæne i stedet for hvert kort navn. dnsDomainIs og shExpMatch har forskellige input og mønstersemantik. Et suffikstjek for .example.internal omfatter ikke den præcise rod example.internal; medtag det tilfælde udtrykkeligt, når det er hensigten. Et shell-lignende mønster er ikke et IP-subnet eller et regulært udtryk.
Sammenlign scriptets resultat for det korte navn, det fuldt kvalificerede navn, en uvedkommende offentlig vært og enhver tilsigtet domænerod. Dette tester regelvalget uden at forbinde til proxyen. Undersøg den første regel, der returnerer, når en bred DIRECT-gren forhindrer et ellers tilgængeligt endpoint i at blive forsøgt.
Brug en navnesammenligning, når den udtrykker politikken; DNS-hjælpere tilføjer deres egne opslag og forsinkelse. Hold også browserens implicitte lokale omgåelse adskilt fra scriptet. Et localhost-tjek kan ikke erstatte den rigtige stavemåde for den offentlige eller interne destination.