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 года Маоне выпустил версию 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 rebinding , направленных на ресурсы интрасети, такие как маршрутизаторы и конфиденциальные веб-приложения. [18]
Функция ClearClick от NoScript [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 Plus. [29] [30] Код, реализующий этот обходной путь, был «замаскирован» [29], чтобы избежать обнаружения. Маоне заявил, что он реализовал его в ответ на фильтр, который блокировал его собственный веб-сайт. После нарастающей критики и заявления администраторов сайта дополнений Mozilla о том, что сайт изменит свои правила относительно модификаций дополнений, [31] Маоне удалил код и принес полные извинения. [29] [32]
Сразу после инцидента с Adblock Plus [33] между Маоне и разработчиками дополнения Ghostery возникла ссора после того, как Маоне внес изменения на свой веб-сайт, отключив уведомление, которое Ghostery использовал для сообщения о программном обеспечении для веб-отслеживания . [34] Это было истолковано как попытка «не дать Ghostery сообщать о трекерах и рекламных сетях на веб-сайтах NoScript». [33] В ответ Маоне заявил, что изменение было сделано, потому что уведомление Ghostery закрывало кнопку пожертвования на сайте NoScript. [35] Этот конфликт был разрешен, когда Маоне изменил CSS своего сайта, чтобы переместить — а не отключить — уведомление Ghostery. [36]