Кіріспе

Компьютерлік желілерге арналған конфигурациялық файл.

Прокси авто конфигурация (PAC) файлы веб-браузерлер мен басқа пайдаланушы агенттерінің белгілі бір URL-ді алу үшін тиісті прокси-серверді (қосылу әдісін) автоматты түрде қалай таңдайтынын анықтайды. PAC файлында FindProxyForURL(url, host) атты JavaScript функциясы болады. Бұл функция бір немесе бірнеше қосылу әдісінің сипаттамаларын қамтитын мәтінді қайтарады. Бұл сипаттамалар пайдаланушы агентіне белгілі бір прокси-серверді пайдалануға немесе тікелей қосылуға мүмкіндік береді. Егер прокси-сервер жауап бермесе, бірнеше сипаттама резервтік нұсқаны қамтамасыз етеді. Браузер басқа URL-дерді сұрамас бұрын осы PAC файлын жүктейді. PAC файлының URL-аты қолмен немесе Web Proxy Auto Discovery Protocol арқылы автоматты түрде анықталады.

Контекст

Қазіргі заманғы веб-браузерлер автоматтандырудың бірнеше деңгейін іске асырады; пайдаланушылар өздерінің қажеттіліктеріне сай деңгейді таңдай алады. Ең көп қолданылатын әдістер:

Автоматты прокси таңдау: Барлық URL-дер үшін пайдаланылатын хост атауын және порт нөмірін көрсетіңіз. Көптеген браузерлер осы проксиді айналып өтетін домендердің тізімін (мысалы, localhost) белгілеуге рұқсат береді. Проксині автоматты түрде конфигурациялау (PAC): әрбір URL үшін тиісті проксиді анықтайтын JavaScript функциясы бар PAC файлының URL-ін көрсетіңіз. Бұл әдіс бірнеше түрлі прокси конфигурациясын қажет ететін ноутбук пайдаланушыларына немесе көптеген проксилермен күрделі корпоративтік жүйелерге қолайлы. Веб-прокси автоматты табу протоколы (WPAD): Браузерге DHCP және DNS сұраулары арқылы PAC файлының орналасқан жерін табуға мүмкіндік береді.

Тарих

Прокси автоконфигурация файл форматы алғаш рет 1996 жылы Netscape компаниясы Netscape Navigator 2.0 бағдарламасы үшін жасалған, және ол кем дегенде бір JavaScript функциясын анықтайтын мәтіндік файл болып табылады.

PAC таңбалық кодтау

PAC скрипттерін кодтау әдетте нақтыланбайды, және әртүрлі браузерлер мен желілік жиынтықтар PAC скрипттерін қалай кодтауға болатыны туралы әртүрлі ережелерге ие. Көбінесе, толығымен ASCII кодировкасындағы PAC скрипттері кез келген браузер немесе желілік жиынтықпен жұмыс істейді. Mozilla Firefox 66 және одан кейінгі нұсқалары UTF-8 кодировкасындағы PAC скрипттерін де қолдайды.

DnsResolve (Қалқымалы код)

dnsResolve функциясы (және осыған ұқсас басқа функциялар) DNS сервері жауап бермесе, браузердің жұмысын ұзақ уақытқа тоқтата алатын DNS сұранысын жүзеге асырады.

myIpAddress (мұнда)

myIpAddress функциясы көбінесе дұрыс емес немесе қолдануға жарамсыз нәтижелерді береді, мысалы, 127.0.0.1, бұл жергілікті хосттың IP-адресі. Жүйенің хост файлында (мысалы, Linux-та /etc/hosts) машинаның хост атына сілтеме жасайтын барлық жолдарды жою көмектесуі мүмкін, бірақ 127.0.0.1 localhost жолы өз орнында қалуы керек.

Қауіпсіздік

2013 жылы зерттеушілер прокси-сервердің автоматты конфигурациясының қауіпсіздік тәуекелдері туралы ескерте бастады. Бұл қауіп жүйе автоматты түрде анықтаған PAC файлын пайдаланып, құрбан болғанның браузер трафигін шабуылшы басқаратын серверге қайта бағыттаудан тұрады. PAC файлының тағы бір мәселесі – оның стандартты іске асылуы кодты қол қою немесе веб-сертификаттар сияқты қауіпсіздік шараларын қамтымайтын қарапайым мәтіндік HTTP арқылы жүзеге асырылады. Бұл шабуылшыларға ортадағы адам шабуылын оңай жасауға мүмкіндік береді.

Microsoft-тың ескі проблемалары

Microsoft-тың Internet Explorer 5.5 немесе одан жаңа нұсқаларында прокси автоматты конфигурация нәтижелерін домен атауы бойынша кэштеу, PAC стандартының икемділігін шектейді. Нәтижесінде, сіз проксиді домен атауы бойынша таңдай аласыз, бірақ URL жолы бойынша емес. Балама ретінде, сіз реестрді өңдеу арқылы прокси автоматты конфигурация нәтижелерін кэштеуді өшіруіңіз керек, бұл процесс де Бойн Поллард (әрі қарай оқу материалдарында тізімделген) сипаттаған. Үйлесімділікті қамтамасыз ету үшін, әсіресе Internet Explorer PAC конфигурациясын пайдаланатын NET 2.0 Framework сияқты басқа Windows компоненттерімен үйлесімділік үшін, isInNet функциясында хост домендерінің атауларының орнына IP-адрестерді пайдалану ұсынылады. Мысалы,
if (isInNet(host, dnsResolve(sampledomain), '255.255.248.0')) {} // NET 2.0 проксині дұрыс анықтайды

if (isInNet(host, sampledomain, '255.255.248.0')) {} // NET 2.0 проксині дұрыс анықтай алмайды
Қазіргі кездегі қағида, PAC файлы қолжетімсіз болған жағдайда тікелей қосылуға көшу. Желі конфигурацияларын ауыстырғаннан кейін (мысалы, VPN-ге кіргенде немесе одан шыққанда), DNS кэшіне байланысты dnsResolve ескірген нәтижелерді беруі мүмкін. Мысалы, Firefox әдетте 20 доменді 60 секундқа кэште сақтайды. Бұл network.dnsCacheEntries және network.dnsCacheExpiration конфигурациялық айнымалылары арқылы конфигурациялануы мүмкін. Сондай-ақ, жүйенің DNS кэшін тазалау көмектеседі, мысалы, Linux-та sudo service dns clean start немесе Windows-та ipconfig /flushdns арқылы. Internet Explorer 9-да isInNet('localHostName', 'second.ip', '255.255.255.255') true мәнін қайтарады және оны шешім ретінде пайдалануға болады. myIpAddress функциясы құрылғыда бір ғана IPv4 адресі бар деп есептейді. Егер құрылғыда бірнеше IPv4 адресі болса немесе IPv6 адресі болса, нәтижелер белгісіз.

Басқалар

Қосымша шектеулер жергілікті машинадағы JavaScript қозғалтқышымен байланысты.