NPAPI 爲什麼會被 Chrome 禁用

其實何止是Chrome, 幾乎所有的瀏覽器廠商都在淘汰/去掉NPAPI的支持
那麼 NPAPI 到底出了什麼問題?

NPAPI全稱叫 Netscape plugin API(網景插件API), 你沒有看錯,就是那個當年被微軟一棒子打死了好多年的 Netscape。

很久以前, Netscape 發明了NPAPI 這個種架構,來幫助瀏覽器渲染一些HTML沒有的東西。比如 PDF, 視頻等等。

事實上, NPAPI 插件架構是個非常好的架構, 一共就40幾個API, 相對於另外一種瀏覽器插件架構: ActiveX來說,簡直就是業界良心。

這裏只有一個問題,它的發明時間是 1995 年,而在那個時候手機還可以砸死人,學校的電腦房要穿鞋套才能進。

那個時代所有類似的API設計者幾乎都很自然的忽略掉了安全性問題。那個時候無論是網絡環境還是商業環境相比現在都簡單很多。

我們來看看NPAPI插件和瀏覽器的關係是什麼, 同時對比下和同樣執行網絡下載代碼的 Javascript 引擎的位置,

看懂了吧, 你以爲是NPAPI是插件是嗎?其實它和瀏覽器是平級運行的,它甚至可以打開網頁,給你安一個木馬,然後隨手幫你關掉殺毒軟件。什麼,你說NPAPI不就40幾個API嘛, 少年,你想多了,NPAPI不限制插件自由訪問系統所有的API.

而 Javascript 引擎的限制就多得多,事實上,Chromium 系列的瀏覽器 Javascript 引擎均是運行在沙盒之中,一舉一動都是被嚴密監視着的,敢有異常? 瀏覽器分分鐘殺死你。

除了安全性以外,插件們還質量參差不齊,一旦崩潰瀏覽器就得跟着一起崩掉。 於是各個瀏覽器又一把鼻涕一遍淚的把插件們放到另外一個進程中運行,惹不起你們我們還躲不起嘛。其他的耗電量,圖形效率,腳本效率一類的我就不多講了,講多了都是淚。

不過如果只是安全,那你把插件放到沙箱裏面隔離起來不就行了嘛。

是的,谷歌當年也是這樣想的,於是他們發明了 PPAPI, 然後在業界裏面振臂一呼,大家來看,我的這個新API好啊,插件用起來更安全,有沙箱哦。

這個是業界夥伴們的態度:


Java: 我最近聽說Chrome不支持我們了,大家請換瀏覽器,就這樣

火狐: 我們對 PPAPI(pepper) 一點興趣都木有。
(而且坑爹的是, Google 的PPAPI鏈接居然指的是Mozilla 的這個頁面。不知道是不是存心噁心Mozilla).

如果你是個程序猿又有一顆好奇的心,表示無法理解PPAPI爲何如此不受待見,你可以去這裏看看PPAPI的文檔 ,在這裏
https://code.google.com/p/ppapi/

你一定會發現問題,其實不管你是不是程序猿你都會發現問題。因爲,這個PPAPI官方文檔鏈接裏面,幾乎木有文檔

不過Adobe認慫了。 事實上Adobe很早就開始發佈PPAI的版本。

所以如果你這幾天再看到插件無法運行的對話框,如果上面寫的是Flash, 你只需要去下載一個最新的ppai的flash 插件,或者下載一個新版的Chrome. 因爲目前Chrome已經開始內置PPAPI版的Flash。

其他的,就看廠商們如何跟進吧。

========================================================================

總結來講:
NPAPI 會被禁掉, 不過PPAPI會被繼續支持,於是:

  • Java Plugin 需要重寫
  • UnityPlugin 需要重寫
  • SliverLight Plugin 需要重寫。

用到以上插件的網站會收到影響。
使用 Flash 插件的網站不會收到影響, 因爲 Flash 已經重寫了。。

下面是 Google 對 流行NPAPI 的統計數據:


所以,普遍性就是:
如果你還在用任何一款NPAPI插件,然後對應的插件還沒有PPAI版本或者HTML 替代版的話。節哀順變吧。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章