Программный интерфейс подключаемых модулей Netscape

Поделись знанием:
(перенаправлено с «NPAPI»)
Перейти к: навигация, поиск

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

Интерфейс был разработан для семейства браузеров Netscape Navigator, начиная с Netscape Navigator 2.0, и в дальнейшем был реализован многими другими браузерами. Однако Internet Explorer не поддерживает этот интерфейс, начиная с версии 5.5[1][2] [3].

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

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





История

К:Википедия:Статьи без источников (тип: не указан)

Идея плагинов зародилась не в самой Netscape Communications, а в Adobe Systems. Джон Уорнок, исполнительный директор, и Алан Паджет, один из основных разработчиков Acrobat Reader, надеялись на возможность использования молодого формата PDF за пределами рабочего стола. Таким образом, вскоре Netscape выпустила первую версию Navigator. Паджет и его коллега-разработчик Eshwar Priyadarshan пытались найти возможность сделать PDF неотъемлемой частью всемирной паутины. Результатом стала живая демонстрация, показанная Уорноку и Джеймсу Кларку, исполнительным директорам Netscape. До этой демонстрации родным форматом для всемирной паутины был только HTML и встроенные на веб-страницы с его помощью изображения. Ссылки на любой другой тип файлов приводили к загрузке этого файла и дальнейшему открытию в соответствующем приложении. В этой демонстрации было показано, как по нажатию на ссылке PDF файла открывалось окно браузера, бесшовно смешивающее отображение PDF и HTML. Кларк поинтересовался, кто же реализовал поддержку в самом Netscape, и с удивлением узнал, что интеграция была реализована без участия Netscape, лишь с небольшим обратным проектированием браузера Netscape.

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

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

Функция поддержки скриптовых языков позволяет использовать JavaScript код на веб-странице для взаимодействия с плагином. Различные версии Netscape и Mozilla поддерживали эту функциональность с использованием различных технологий: LiveConnect, XPConnect, и npruntime.

Поддерживащие браузеры

Следующие браузеры поддерживают NPAPI плагины:

Некоторое время Internet Explorer обеспечивал функционирование плагинов, созданных для Netscape. Это было связано с малым количеством реализованных ActiveX функций с помощью файла «plugin.ocx», который выступал в качестве прослойки между ActiveX и NPAPI плагинами. IE будет загружать ActiveX и использовать определённые для страницы плагины. Microsoft сделала заявление, что использование NPAPI небезопасно (либо небезопасен API, реализованный в IE) и прекратила поддержку, начиная с версии 5.5SP2[1][2][3].

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

Популярным заблуждением о технологии NPAPI является его бо́льшая безопасность, чем у ActiveX. Однако обе технологии запускают машинный код и имеют привилегии родительского процесса. Если родительские процессы обладают одинаковыми привилегиями, то вредоносный NPAPI плагин и ActiveX могут нанести сходный ущерб. Стоит отметить, что NPAPI плагины можно сделать более безопасными простой сменой учётной записи пользователя. В общем случае имеется возможность устанавливать и запускать плагины с пользовательскими правами, в то время как использование ActiveX требует административных привилегий. С ограниченными правами плагин не сможет нанести большого вредаК:Википедия:Статьи без источников (тип: не указан)[источник не указан 3415 дней].

Другим важным отличием между NPAPI и ActiveX является то, что NPAPI используются только в качестве интернет-плагинов, в то время, как ActiveX используется для широкого круга задач, включая применение в Windows приложениях. Обычный пользователь Windows имеет огромный массив установленных элементов ActiveX, некоторые из которых помечены как «безопасно для скриптов», на самом деле не являющиеся безопасными. Любой из них может быть использован для атаки на компьютер пользователя[5].

Другим отличием для NPAPI является то, что его реализации (до Mozilla Firefox, см. ниже) не загружали и не устанавливали автоматически недостающие плагины. На месте такого плагина отображалась заглушка. Если пользователь нажимал по ней, то он перенаправлялся на сайт Netscape, где мог подобрать, загрузить и установить подходящий плагин. Безусловно, такая схема неудобна для пользователя, однако она исключает один из векторов атаки, используемый вредоносным ПО.

Internet Explorer считывает из HTML информацию о месте установленного ActiveX. Если элемент ActiveX не установлен, IE самостоятельно загрузит недостающий элемент из указанного источника, затем задаст вопрос о принятии цифровой подписи и нажатии кнопки установки. Подобная схема является рабочей в доверенной инфраструктуре, однако использование методов социальной инженерии может убедить пользователя проигнорировать предупреждения, и повлечь негативные последствия. Большое количество программ-шпионов, рекламного ПО и вредоносных сайтов используют этот вектор атаки. Для уменьшения рисков, Microsoft пришлось повысить уровень безопасности по умолчанию для элементов ActiveX и вести списки вредоносных элементов ActiveX.

Mozilla Firefox пытается предложить золотую середину. Если плагин неизвестен, то пользователь будет оповещён и направлен на сайт [addons.mozilla.org/plugins mozilla.org] с безопасным соединением. Пользователь может разрешить Firefox загрузить и установить соответствующий плагин. Эта модель не указывает браузеру место загрузки плагина: плагины загружаются из централизованного места. Это позволяет Firefox предоставлять механизм бесшовной установки надёжных и проверенных плагинов. Данная модель неявно доверяет сервису поиска «хороших» плагинов, что требует повышенной безопасности данного сайта.

Напишите отзыв о статье "Программный интерфейс подключаемых модулей Netscape"

Примечания

  1. 1 2 [support.microsoft.com/kb/303401 Netscape-style plug-ins do not work after upgrading Internet Explorer]
  2. 1 2 Giannandrea, J. (September 4, 2001) [web.archive.org/web/20071016233843/www.meer.net/jg/broken-plugins.html Microsoft breaks Web Plugins in Windows XP].
  3. 1 2 [support.microsoft.com/kb/306790 Description of Internet Explorer Support for Netscape-Style Plug-ins]
  4. [www.linux.org.ru/news/mozilla/12197745 Firefox 43 - Mozilla - Новости]
  5. [cwe.mitre.org/data/definitions/623.html CWE-623: Небезопасные элементы ActiveX, помеченные как безопасные для скриптов]  (англ.)

Ссылки

  • [developer.mozilla.org/en/Plugins Документация по разработке плагинов] на Mozilla Developer Center, включая NPAPI API (англ.)
  • [www.mozilla.org/projects/plugins/plugin-host-control.html Использование Netscape плагинов под управлением ActiveX] — Замена для plugin.ocx, который был удалён из Internet Explorer. (англ.)
  • [www.rawmaterialsoftware.com/juce Кросс-платформенная обёртка NPAPI классов, предоставляемая фреймворком JUCE] (англ.)
  • [openlibrary.org/books/OL1015194M/Programming_Netscape_plug-ins_Zan_Oliphant. Книга, обучающая программированию Netscape плагинов, написанная Zan Oliphant] (англ.)
  • [code.google.com/p/nixysa/ Nixysa: фреймворк, генерирующий код для NPAPI плагинов. Лицензия Apache 2.0.] (англ.)
  • [npapi.com/tutorial Учебник NPAPI Разработка Firefox плагина] ([npapi.com/tutorial2 Часть два], [npapi.com/tutorial3 Часть три]) (англ.)
  • [www.firebreath.org/ Firebreath] — кросс-платформенный фреймворк для разработки NPAPI и ActiveX плагинов из одной кодовой базы  (англ.)

Отрывок, характеризующий Программный интерфейс подключаемых модулей Netscape

Потом подошел худой, бледный солдат с шеей, обвязанной окровавленною подверткой, и сердитым голосом требовал воды у артиллеристов.
– Что ж, умирать, что ли, как собаке? – говорил он.
Тушин велел дать ему воды. Потом подбежал веселый солдат, прося огоньку в пехоту.
– Огоньку горяченького в пехоту! Счастливо оставаться, землячки, благодарим за огонек, мы назад с процентой отдадим, – говорил он, унося куда то в темноту краснеющуюся головешку.
За этим солдатом четыре солдата, неся что то тяжелое на шинели, прошли мимо костра. Один из них споткнулся.
– Ишь, черти, на дороге дрова положили, – проворчал он.
– Кончился, что ж его носить? – сказал один из них.
– Ну, вас!
И они скрылись во мраке с своею ношей.
– Что? болит? – спросил Тушин шопотом у Ростова.
– Болит.
– Ваше благородие, к генералу. Здесь в избе стоят, – сказал фейерверкер, подходя к Тушину.
– Сейчас, голубчик.
Тушин встал и, застегивая шинель и оправляясь, отошел от костра…
Недалеко от костра артиллеристов, в приготовленной для него избе, сидел князь Багратион за обедом, разговаривая с некоторыми начальниками частей, собравшимися у него. Тут был старичок с полузакрытыми глазами, жадно обгладывавший баранью кость, и двадцатидвухлетний безупречный генерал, раскрасневшийся от рюмки водки и обеда, и штаб офицер с именным перстнем, и Жерков, беспокойно оглядывавший всех, и князь Андрей, бледный, с поджатыми губами и лихорадочно блестящими глазами.
В избе стояло прислоненное в углу взятое французское знамя, и аудитор с наивным лицом щупал ткань знамени и, недоумевая, покачивал головой, может быть оттого, что его и в самом деле интересовал вид знамени, а может быть, и оттого, что ему тяжело было голодному смотреть на обед, за которым ему не достало прибора. В соседней избе находился взятый в плен драгунами французский полковник. Около него толпились, рассматривая его, наши офицеры. Князь Багратион благодарил отдельных начальников и расспрашивал о подробностях дела и о потерях. Полковой командир, представлявшийся под Браунау, докладывал князю, что, как только началось дело, он отступил из леса, собрал дроворубов и, пропустив их мимо себя, с двумя баталионами ударил в штыки и опрокинул французов.
– Как я увидал, ваше сиятельство, что первый батальон расстроен, я стал на дороге и думаю: «пропущу этих и встречу батальным огнем»; так и сделал.
Полковому командиру так хотелось сделать это, так он жалел, что не успел этого сделать, что ему казалось, что всё это точно было. Даже, может быть, и в самом деле было? Разве можно было разобрать в этой путанице, что было и чего не было?
– Причем должен заметить, ваше сиятельство, – продолжал он, вспоминая о разговоре Долохова с Кутузовым и о последнем свидании своем с разжалованным, – что рядовой, разжалованный Долохов, на моих глазах взял в плен французского офицера и особенно отличился.
– Здесь то я видел, ваше сиятельство, атаку павлоградцев, – беспокойно оглядываясь, вмешался Жерков, который вовсе не видал в этот день гусар, а только слышал о них от пехотного офицера. – Смяли два каре, ваше сиятельство.
На слова Жеркова некоторые улыбнулись, как и всегда ожидая от него шутки; но, заметив, что то, что он говорил, клонилось тоже к славе нашего оружия и нынешнего дня, приняли серьезное выражение, хотя многие очень хорошо знали, что то, что говорил Жерков, была ложь, ни на чем не основанная. Князь Багратион обратился к старичку полковнику.
– Благодарю всех, господа, все части действовали геройски: пехота, кавалерия и артиллерия. Каким образом в центре оставлены два орудия? – спросил он, ища кого то глазами. (Князь Багратион не спрашивал про орудия левого фланга; он знал уже, что там в самом начале дела были брошены все пушки.) – Я вас, кажется, просил, – обратился он к дежурному штаб офицеру.
– Одно было подбито, – отвечал дежурный штаб офицер, – а другое, я не могу понять; я сам там всё время был и распоряжался и только что отъехал… Жарко было, правда, – прибавил он скромно.
Кто то сказал, что капитан Тушин стоит здесь у самой деревни, и что за ним уже послано.
– Да вот вы были, – сказал князь Багратион, обращаясь к князю Андрею.
– Как же, мы вместе немного не съехались, – сказал дежурный штаб офицер, приятно улыбаясь Болконскому.
– Я не имел удовольствия вас видеть, – холодно и отрывисто сказал князь Андрей.
Все молчали. На пороге показался Тушин, робко пробиравшийся из за спин генералов. Обходя генералов в тесной избе, сконфуженный, как и всегда, при виде начальства, Тушин не рассмотрел древка знамени и спотыкнулся на него. Несколько голосов засмеялось.
– Каким образом орудие оставлено? – спросил Багратион, нахмурившись не столько на капитана, сколько на смеявшихся, в числе которых громче всех слышался голос Жеркова.
Тушину теперь только, при виде грозного начальства, во всем ужасе представилась его вина и позор в том, что он, оставшись жив, потерял два орудия. Он так был взволнован, что до сей минуты не успел подумать об этом. Смех офицеров еще больше сбил его с толку. Он стоял перед Багратионом с дрожащею нижнею челюстью и едва проговорил:
– Не знаю… ваше сиятельство… людей не было, ваше сиятельство.
– Вы бы могли из прикрытия взять!
Что прикрытия не было, этого не сказал Тушин, хотя это была сущая правда. Он боялся подвести этим другого начальника и молча, остановившимися глазами, смотрел прямо в лицо Багратиону, как смотрит сбившийся ученик в глаза экзаменатору.
Молчание было довольно продолжительно. Князь Багратион, видимо, не желая быть строгим, не находился, что сказать; остальные не смели вмешаться в разговор. Князь Андрей исподлобья смотрел на Тушина, и пальцы его рук нервически двигались.
– Ваше сиятельство, – прервал князь Андрей молчание своим резким голосом, – вы меня изволили послать к батарее капитана Тушина. Я был там и нашел две трети людей и лошадей перебитыми, два орудия исковерканными, и прикрытия никакого.
Князь Багратион и Тушин одинаково упорно смотрели теперь на сдержанно и взволнованно говорившего Болконского.
– И ежели, ваше сиятельство, позволите мне высказать свое мнение, – продолжал он, – то успехом дня мы обязаны более всего действию этой батареи и геройской стойкости капитана Тушина с его ротой, – сказал князь Андрей и, не ожидая ответа, тотчас же встал и отошел от стола.
Князь Багратион посмотрел на Тушина и, видимо не желая выказать недоверия к резкому суждению Болконского и, вместе с тем, чувствуя себя не в состоянии вполне верить ему, наклонил голову и сказал Тушину, что он может итти. Князь Андрей вышел за ним.
– Вот спасибо: выручил, голубчик, – сказал ему Тушин.
Князь Андрей оглянул Тушина и, ничего не сказав, отошел от него. Князю Андрею было грустно и тяжело. Всё это было так странно, так непохоже на то, чего он надеялся.

«Кто они? Зачем они? Что им нужно? И когда всё это кончится?» думал Ростов, глядя на переменявшиеся перед ним тени. Боль в руке становилась всё мучительнее. Сон клонил непреодолимо, в глазах прыгали красные круги, и впечатление этих голосов и этих лиц и чувство одиночества сливались с чувством боли. Это они, эти солдаты, раненые и нераненые, – это они то и давили, и тяготили, и выворачивали жилы, и жгли мясо в его разломанной руке и плече. Чтобы избавиться от них, он закрыл глаза.
Он забылся на одну минуту, но в этот короткий промежуток забвения он видел во сне бесчисленное количество предметов: он видел свою мать и ее большую белую руку, видел худенькие плечи Сони, глаза и смех Наташи, и Денисова с его голосом и усами, и Телянина, и всю свою историю с Теляниным и Богданычем. Вся эта история была одно и то же, что этот солдат с резким голосом, и эта то вся история и этот то солдат так мучительно, неотступно держали, давили и все в одну сторону тянули его руку. Он пытался устраняться от них, но они не отпускали ни на волос, ни на секунду его плечо. Оно бы не болело, оно было бы здорово, ежели б они не тянули его; но нельзя было избавиться от них.
Он открыл глаза и поглядел вверх. Черный полог ночи на аршин висел над светом углей. В этом свете летали порошинки падавшего снега. Тушин не возвращался, лекарь не приходил. Он был один, только какой то солдатик сидел теперь голый по другую сторону огня и грел свое худое желтое тело.