Программный интерфейс подключаемых модулей Netscape (англ. Netscape Plugin Application Programming Interface, NPAPI) — устаревшая кроссплатформенная архитектура разработки плагинов для веб-браузеров.

Интерфейс был разработан для семейства браузеров Netscape Navigator, начиная с версии 2.0, и в дальнейшем реализован многими другими браузерами. Начиная с середины 2010‑х годов, по соображениям безопасности и производительности, все основные браузеры прекратили поддержку NPAPI: технология была удалена из Internet Explorer (начиная с версии 5.5 Service Pack 2)[1][2][3], из Firefox (начиная с версии 52, окончательно в версии 53)[4], из Google Chrome (начиная с версии 45)[5], из Safari (начиная с версии 14)[6]. В настоящее время NPAPI поддерживается только в некоторых нишевых или устаревших браузерах (например, Pale Moon, Waterfox классической версии на базе XUL-платформы).

Распространённость интерфейса была связана с его относительной простотой. Плагин объявляет о поддержке определённых MIME-типов (например, «audio/mpeg») с помощью информации в файле. Когда браузер встречает такой тип данных, он загружает связанный плагин, выделяет область на странице и передаёт плагину поток данных. Плагин полностью отвечает за отображение и обработку данных (видео, аудио, приложения), работая непосредственно внутри страницы, в отличие от старых браузеров, которые запускали внешнее приложение для неизвестного типа данных[7].

API интерфейса требует от браузера реализации небольшого набора функций — около 15 для инициализации, создания, уничтожения и позиционирования плагина. Например, базовая функция инициализации плагина выглядит так:

NPError NPP_Initialize(void);

Браузер вызывает её при загрузке плагина. Аналогично, NPP_Shutdown() отвечает за выгрузку, а NPP_New() создаёт экземпляр плагина для конкретного объекта на странице. NPAPI поддерживал скриптовое взаимодействие (через LiveConnect, XPConnect, npruntime), печать, полноэкранный режим, безоконные плагины и потоковую передачу данных.

История

править

Идея плагинов зародилась в Adobe Systems (тогда — Adobe). Джон Уорнок, исполнительный директор Adobe, и Алан Паджет, один из основных разработчиков Acrobat Reader, хотели сделать возможным использование формата PDF внутри веб-страниц. В 1995 году Паджет и его коллега Eshwar Priyadarshan продемонстрировали Уорноку и Джеймсу Кларку (сооснователю Netscape) работающую интеграцию PDF в браузер Netscape. Демонстрация показала, что по клику на ссылке PDF-файл открывается прямо в окне браузера, смешиваясь с HTML-содержимым. Кларк был удивлён, что интеграция выполнена без участия Netscape, путём обратного проектирования браузера[8].

После этой демонстрации Netscape приняла предложение Adobe создать открытую архитектуру плагинов. Разработчики Adobe Гордон Дау (Gordon Dow) и Набель Аль-Шамма (Nabeel Al-Shamma) уже реализовали похожую архитектуру в Acrobat Reader, и Паджет предложил использовать этот опыт. Так родилась спецификация NPAPI, которая была включена в Netscape Navigator 2.0 (выпущен в 1996 году)[8]. Первоначальное название «Allan’s Hack» (в честь разработчика прототипа) не закрепилось.

Поддержка скриптовых языков

править

Возможность взаимодействия с JavaScript на веб-странице реализовывалась через различные технологии. В Netscape использовался LiveConnect (Java-мост). В браузерах на базе Mozilla (Firefox, SeaMonkey) применялся XPConnect, а затем унифицированный интерфейс npruntime, который стал стандартом де-факто[9].

Прекращение поддержки

править

Большинство современных браузеров отказались от NPAPI по соображениям безопасности и производительности. Ниже перечислены ключевые браузеры, прекратившие поддержку, и даты, когда это произошло:

  • Google Chrome — поддержка NPAPI прекращена, начиная с версии 45[5].
  • Mozilla Firefox — поддержка отключена по умолчанию в версии 52 и полностью удалена в версии 53[4].
  • Apple Safari — поддержка NPAPI удалена, начиная с версии 14[10].
  • Microsoft Internet Explorer — NPAPI-плагины работали через ActiveX-обёртку (plugin.ocx) до версии 5.5 SP2. В более поздних версиях поддержка была прекращена[3][2].

В настоящее время NPAPI сохраняется только в нескольких нишевых браузерах, ориентированных на совместимость со старыми расширениями: Pale Moon[11] и классические версии Waterfox (на базе XUL). Другие браузеры (старые версии Opera, Konqueror, K-Meleon) поддержку NPAPI либо никогда не имели, либо прекратили её развитие вместе с обновлениями.

Безопасность

править

NPAPI и ActiveX часто сравнивают с точки зрения безопасности. Обе технологии выполняют нативный машинный код с привилегиями браузера. Потенциальный ущерб от вредоносного NPAPI-плагина сопоставим с ActiveX-компонентом. Однако есть различия:

  • NPAPI-плагины обычно работают в контексте учётной записи пользователя, тогда как установка ActiveX-компонентов в старых версиях Windows (XP и ранее) часто требовала прав администратора. В новых версиях Windows эта разница нивелирована, но исторически ActiveX считался более опасным[12].
  • ActiveX широко использовался не только в браузере, но и в других приложениях Windows, что создавало большую поверхность атаки. NPAPI был ограничен браузерной средой.
  • NPAPI не поддерживал автоматическую установку плагинов. Браузер отображал заглушку и перенаправлял пользователя на страницу загрузки, что затрудняло drive-by-атаки по сравнению с ActiveX, который мог автоматически загружать и устанавливать компоненты из указанного источника (с выдачей предупреждения).

В ранних версиях Firefox (до введения встроенного менеджера плагинов) пользователь при отсутствии плагина направлялся на сайт Netscape. Позднее Firefox стал использовать централизованный репозиторий на addons.mozilla.org, что позволяло устанавливать плагины только из проверенного источника[13]. Тем не менее, NPAPI никогда не обеспечивал изоляции плагинов (песочницы) на уровне операционной системы, что стало одной из причин его отказа в пользу более современных технологий (PPAPI, WebExtensions[14]).

Наследие

править

Начиная с 2013–2014 годов, производители браузеров объявили о поэтапном отказе от NPAPI. Причины: высокая уязвимость плагинов (особенно Adobe Flash и Java), снижение производительности и появление более безопасных альтернатив (например, API расширений на JavaScript)[15]. К 2020 году NPAPI был удалён или отключён по умолчанию во всех современных браузерах. Тем не менее, архитектура плагинов оказала значительное влияние на развитие веб-технологий, позволив внедрить поддержку видео, аудио, 3D-графику и другие возможности до появления HTML5.

Примечания

править
  1. Netscape-style plug-ins do not work after upgrading Internet Explorer. support.microsoft.com. Дата обращения: 22 мая 2011. Архивировано 24 мая 2011 года.
  2. 1 2 Giannandrea, J. Microsoft breaks Web Plugins in Windows XP (4 сентября 2001). Архивировано из оригинала 16 октября 2007 года.
  3. 1 2 Description of Internet Explorer Support for Netscape-Style Plug-ins. support.microsoft.com. Дата обращения: 22 мая 2011. Архивировано 24 мая 2011 года.
  4. 1 2 Plugin Roadmap for Firefox. MDN Web Docs. Дата обращения: 10 июня 2026. Архивировано 9 октября 2016 года.
  5. 1 2 NPAPI deprecation: developer guide. www.chromium.org. Дата обращения: 10 июня 2026. Архивировано 20 мая 2024 года.
  6. Safari Technology Preview Release Notes. Apple Developer. — «"Removed support for NPAPI plug-ins" (Release 113)». Дата обращения: 10 июня 2026.
  7. Introduction to NPAPI. MDN Web Docs. Дата обращения: 10 июня 2026. Архивировано из оригинала 2 октября 2015 года.
  8. 1 2 Peter Bright. A Brief History of the Browser Plug-in Architecture. O'Reilly (15 августа 2014). Дата обращения: 10 июня 2026.
  9. Scripting plugins. MDN Web Docs. Дата обращения: 10 июня 2026. Архивировано из оригинала 24 сентября 2015 года.
  10. Safari Technology Preview Release Notes. Apple Developer. — «"Removed support for NPAPI plug-ins" (Release 113)». Дата обращения: 10 июня 2026.
  11. Pale Moon – The Private, Secure and Fully Customizable Open Source Web Browser. palemoon.org. — «Pale Moon also supports legacy, native plugins like Java and Flash through the Netscape Plugin API (NPAPI).» Дата обращения: 10 июня 2026.
  12. CWE-623: Unsafe ActiveX Control Marked Safe For Scripting. MITRE. Дата обращения: 10 июня 2026.
  13. Update on Plugin Activation in Firefox. Mozilla Security Blog (27 февраля 2014). Дата обращения: 10 июня 2026.
  14. Extensions Manifest V3 introduction. Chrome Developers. Дата обращения: 10 июня 2026.
  15. Saying Goodbye to Our Old Friend NPAPI. Chromium Blog (23 сентября 2013). Дата обращения: 10 июня 2026.

Ссылки

править

📚 Artikel Terkait di Wikipedia

ActiveX

используют программный интерфейс подключаемых модулей Netscape (Netscape Plugin Application Programming Interface, NPAPI). NPAPI выполняет функции, подобные таковым