PAC - JavaScript - shExpMatch() против dnsDomainIs()

В чем разница между shExpMatch() а также dnsDomainIs()

Определение гласит:

// dnsDomainIs()
// Evaluates hostnames and returns true if hostnames match. Used mainly to match and exception individual host names.

// Example:
if (dnsDomainIs(host, ".google.com")) return "DIRECT";



// shExpMatch()
// Attempts to match hostname or URL to a specified shell expression and returns true if matched.

// Example:
if (shExpMatch(url, "*vpn.domain.com*") ||
      shExpMatch(url, "*abcdomain.com/folder/*"))
  return "DIRECT";

Если я правильно понял то

shExpMatch() - можно использовать некоторые шаблоны

dnsDomainIs() - можно использовать точные имена

Является shExpMatch() просто превосходит dnsDomainIs()

2 ответа

Глядя на определения из http://findproxyforurl.com/pac-functions/, они имеют очень разные функциональные возможности. dnsDomainIs() использует точные доменные имена, такие как .google.comв то время как shExpMatch() использует подобные оболочке строки с подстановочными знаками, такими как *.google.com,

Теперь они выглядят очень по-разному, но с shExpMatch вы также можете сопоставлять элементы в структуре папок, например example.com/sub/folder/* или же http://example.com/img/*.png,

Первый соответствует только имени хоста без протокола, порта или вложенных папок, а второй соответствует целому URL. Тем не менее, вы можете использовать shExpMatch(), например dnsDomainIs(), но я не уверен, что если вы уязвимы, то случайно допустите URL-адрес, например google.com.example.com за google.com - dnsDomainIs() возвращает здесь false, shExpMatch() может возвращать true (не проверено, только догадка)

Остерегайтесь следующего в Firefox 52.0...

dnsDomainIs ("www.notmycompany.com", "mycompany.com") возвращает значение true dnsDomainIs("www.myCompany.com", "mycompany.com") возвращает значение false

Другие вопросы по тегам