NPAPI 為什麼會被 Chrome 禁用?受影響的網站有什麼普遍性?

相關問題:

  • Chrome 有哪些 NPAPI 的代替方案?WebSocket 可以嗎?

  • Chrome 不支持 NPAPI 後,以前 Unity 項目該何去何從?


其實何止是Chrome, 幾乎所有的瀏覽器廠商都在淘汰/去掉NPAPI的支持

Opera: 我早就說了啊

火狐 :我還是會支持的,只是大家要一起來淘汰這個技術.

如果我告訴你 Flash 也是NPAPI插件,你會不會是這個樣子

那麼 NPAPI 到底出了什麼問題?

NPAPI全稱叫 Netscape plugin 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 替代版的話。9月以後節哀順變吧。。


先上官方的四篇:

2013年9月

Chromium Blog: Saying Goodbye to Our Old Friend NPAPI

2014年5月

Chromium Blog: Update on NPAPI Deprecation

2014年11月

Chromium Blog: The Final Countdown for NPAPI

刪除NPAPI支持的時間表:

NPAPI deprecation: developer guide


曾經用npapi做過遊戲,確實安全問題很大,感覺跟ie的activeX一樣,可以隨意調用本地資源。幾年前一個黑客就告訴我可以拿著個干很多壞事,到沒看爆出什麼這些問題。taobao, 迅雷等等國內大廠都有這類插件。非ie的瀏覽器當時都支持這個機制,chrome,opera,safari,firefox。


安全性 安全性 安全性 重要的話要說三遍

npapi可以任意訪問系統資源,許可權非常大


對於互聯網網站,就像前面幾位答主講的那樣。對於企業內部的網站(系統)來說,這個消息是那些基於activex插件客戶端開發的,號稱全面支持chrome/firefox瀏覽器的系統的噩夢… 因為大家都是基於一個npapi的免費軟體ffactivex來做的。比如做oa系統版式文件的。


Chrome45開始,Chrome移除了NPAPI、 Java applets、 Silverlight的插件支持架構。Flash Player現在也是視頻播放的次選項了。網頁越來越輕盈和標準統一,促使網站適配新的標準,對於用戶和開發者都是好事。


難怪我用opera訪問一些頁面的時候會彈出將不再支持該插件,估計就是因為這個網站使用了NPAPI吧


至少在中國是很大面積受影響,淘汰NPAPI,這對「國產」瀏覽器來說,簡直就是春天!

因為NPAPI的原因,我都開始無恥地向客戶「推薦」「國產」瀏覽器了,哎。


感謝分享


手機瀏覽器現在還支持嗎


推薦閱讀:

零知識證明與公鑰密碼體制有何聯繫,是不是公鑰密碼體制本身的簽名就是一種零知識證明?
信息安全專業的女生,計算機最好主攻哪個方向?
為什麼這麼多商業Android開發者不混淆代碼?
離線攻擊是如何實現的?
whu計算機類的三個專業都有什麼特點?

TAG:GoogleChrome | API | 網站 | 信息安全 | 谷歌Google |