NoScript (или NoScript Security Suite ) — это бесплатное расширение с открытым исходным кодом для веб-браузеров на базе Firefox и Chromium , [4] написанное и поддерживаемое Джорджио Маоне, [5] разработчиком программного обеспечения и членом Mozilla Security Group. [6]
По умолчанию NoScript блокирует активный (исполняемый) веб-контент, который можно полностью или частично разблокировать, добавив сайт или домен в белый список из меню панели инструментов расширения или щелкнув значок-заполнитель.
В конфигурации по умолчанию активный контент глобально запрещен, хотя пользователь может изменить это и использовать NoScript для блокировки определенного нежелательного контента. Белый список может быть постоянным или временным (пока браузер не закроется или пользователь не отзовет разрешения). Активный контент может состоять из JavaScript , веб-шрифтов, медиакодеков , WebGL и Flash . Надстройка также предлагает конкретные меры противодействия эксплойтам безопасности. [7]
Поскольку для многих атак на веб-браузер требуется активный контент, который браузер обычно запускает без вопросов, отключение такого контента по умолчанию и использование его только в той степени, в которой это необходимо, снижает вероятность использования уязвимости. Кроме того, отказ от загрузки этого контента экономит значительную часть трафика [8] и исключает некоторые формы веб-отслеживания.
NoScript полезен разработчикам, чтобы увидеть, насколько хорошо их сайт работает с отключенным JavaScript. Он также может удалить многие раздражающие веб-элементы, такие как всплывающие сообщения на странице и некоторые системы платного доступа , для работы которых требуется JavaScript.
NoScript принимает форму значка на панели инструментов или значка в строке состояния в Firefox. Он отображается на каждом веб-сайте, чтобы указать, заблокировал ли NoScript, разрешил или частично разрешил запуск сценариев на просматриваемой веб-странице. Нажатие или наведение (начиная с версии 2.0.3rc1 [9] ) курсора мыши на значок NoScript дает пользователю возможность разрешить или запретить обработку сценария.
Интерфейс NoScript, доступ к которому осуществляется щелчком правой кнопкой мыши на веб-странице или специальным полем NoScript внизу страницы (по умолчанию), показывает URL-адрес заблокированных сценариев, но не предоставляет никаких ссылок. чтобы проверить, безопасно ли запускать данный сценарий. [10] На сложных веб-страницах пользователи могут столкнуться с более чем дюжиной различных загадочных URL-адресов и нефункционирующей веб-страницей, у которых есть только выбор: разрешить скрипт, заблокировать скрипт или разрешить его временно.
14 ноября 2017 года Джорджио Маоне анонсировал NoScript 10, который будет «сильно отличаться» от версий 5.x и будет использовать технологию WebExtension, что делает его совместимым с Firefox Quantum . [11] 20 ноября 2017 г. компания Maone выпустила версию 10.1.1 для Firefox 57 и выше. NoScript доступен для Firefox для Android. [12]
11 апреля 2007 года был публично выпущен NoScript 1.1.4.7, [13] представивший первую защиту на стороне клиента от межсайтового скриптинга (XSS) типа 0 и типа 1, когда-либо реализованного в веб-браузере.
Всякий раз, когда веб-сайт пытается внедрить код HTML или JavaScript внутри другого сайта (нарушение политики одного и того же источника ), NoScript фильтрует вредоносный запрос и нейтрализует его опасную полезную нагрузку. [14]
Подобные функции были реализованы годы спустя в Microsoft Internet Explorer 8 [15] и Google Chrome . [16]
Application Boundaries Enforcer (ABE) — это встроенный модуль NoScript, предназначенный для усиления защиты веб-приложений , уже обеспечиваемой NoScript, путем предоставления компонента, подобного брандмауэру, работающего внутри браузера.
Этот «брандмауэр» специализируется на определении и защите границ каждого конфиденциального веб-приложения, имеющего отношение к пользователю (например, плагинов, веб-почты, онлайн-банкинга и т. д.), в соответствии с политиками, определенными непосредственно пользователем, веб-разработчиком. /администратор или доверенная третья сторона. [17] В конфигурации по умолчанию ABE NoScript обеспечивает защиту от атак CSRF и DNS с перепривязкой, направленных на ресурсы интрасети, такие как маршрутизаторы и конфиденциальные веб-приложения. [18]
Функция NoScript ClearClick [19] , выпущенная 8 октября 2008 г., не позволяет пользователям нажимать на невидимые или «исправленные» элементы страницы встроенных документов или апплетов, устраняя все типы кликджекинга (т. е. с помощью фреймов и плагинов). [20]
Это делает NoScript «единственным свободно доступным продуктом, который предлагает разумную степень защиты от атак кликджекинга». [21]
NoScript может заставить браузер всегда использовать HTTPS при подключении к некоторым конфиденциальным сайтам, чтобы предотвратить атаки «человек посередине». Такое поведение может быть вызвано либо самими веб-сайтами, отправкой заголовка Strict Transport Security , либо настроено пользователями для тех веб-сайтов, которые еще не поддерживают Strict Transport Security. [22]
Функции улучшения HTTPS NoScript были использованы Electronic Frontier Foundation в качестве основы для дополнения HTTPS Everywhere . [23]
В мае 2009 года сообщалось, что между разработчиком NoScript Джорджио Маоне и разработчиками расширения для блокировки рекламы Firefox Adblock Plus разразилась «война расширений» после того, как Маоне выпустил версию NoScript, которая обходила блокировку, включенную AdBlock. Плюс фильтр. [29] [30] Код, реализующий этот обходной путь, был «замаскирован» [29], чтобы избежать обнаружения. Маоне заявил, что внедрил его в ответ на фильтр, заблокировавший его собственный сайт. После растущей критики и заявления администраторов сайта дополнений Mozilla о том, что сайт изменит свои правила в отношении модификаций дополнений, [31] Маоне удалил код и принес полные извинения. [29] [32]
Сразу после инцидента с Adblock Plus [33] между Маоне и разработчиками дополнения Ghostery возникла ссора после того, как Маоне внедрил на своем веб-сайте изменение, которое отключило уведомление, которое Ghostery использовало для сообщения о программном обеспечении веб-отслеживания . [34] Это было истолковано как попытка «не допустить, чтобы Ghostery сообщала о трекерах и рекламных сетях на веб-сайтах NoScript». [33] В ответ Маоне заявил, что изменение было внесено потому, что уведомление Ghostery скрывало кнопку пожертвования на сайте NoScript. [35] Этот конфликт был разрешен, когда Маоне изменил CSS своего сайта, переместив, а не отключив, уведомление Ghostery. [36]