當前位置:
首頁 > 科技 > Node.js 10.0和NPM 6發布,強化安全性

Node.js 10.0和NPM 6發布,強化安全性

接收程序員的技術早餐

作者|Kevin Ball

譯者|張衛濱

4 月 24 日,Node.js 項目發布了 10.0.0 版本的 Node.js,同時 npm, Inc 發布了 node 包管理器 npm 的 6.0 版本。這兩個發布版本都強調了安全性的增強,Node.js 升級到了 OpenSSL 1.1.0 版本,而 npm 包含了多項聚焦安全的特性,比如對不安全依賴的自動告警。Node.js 發布版本還包含了一個新的原生編程 API 以及對 HTTP2 的穩定支持。

按照官方關於版本發布的博客文章,「Node.js 10.x 主要關注漸進性的增強」,但這也是第一個升級到 OpenSSL 1.1.0 的 Node 版本。當這個版本的 OpenSSL 發布時,它得到了加密專家的讚譽,比如 Open Crypto Audit 的 Kenn White 在一條推文中說到:

OpenSSL 1.1.0 是一個重要的重構:IPv6、EVP、Bignum、核心結構、狀態機、協商。添加了 CCM、OCB、 ChaCha/Poly、scrypt、BLAKE2。

從 Wikipedia 上的版本發布歷史可以看到,OpenSSL 的 1.1.0 版本是從 2010 年發布的 1.0 版本以來,第一次破壞二進位兼容性的版本,並且升級到了新的 ABI(應用二進位介面,Application Binary Interface),這樣能夠允許 Node.js 無縫適應後續的更新,包括按照日程五月份發布的 OpenSSL 1.1.1,其中會包含對 TLS 1.3 的支持。

Node.js 發布版本還包含了第一個非實驗性版本的 Node.js API(N-API)。按照發布說明:

N-API 是一個穩定的模塊 API,它獨立於 V8 中的變更,允許模塊在更新版本的 Node.js 中運行,而不需要重新編譯。

新 API 的意圖不僅在於讓包含原生(非 JavaScript)代碼的模塊能夠健壯地升級 V8 的版本,它還能允許包含 V8 之外的其他 JavaScript 引擎。在最初宣布 N-API 的博客文章中,來自微軟的 Arunush Chandra 和來自 IBM 的 Michael Dawson 認為直接或間接依賴原生 API 會影響到 30% 的包,這對於升級 Node.js 版本來說,是很大的障礙。Chandra 和 Dawson 說到:

針對原生模塊的下一代、ABI 穩定的 Node.js API,或者稱為 N-API,致力於解決這個問題,它的實現方式是為 JavaScript VM 中的原生 API 提供一個 ABI 穩定的抽象層。這樣的話,就允許原生模塊的作者針對每個平台和架構編譯一次,就能將其應用於實現了 N-API 的任意 Node.js 版本。對於構建在不同 VM 的 Node.js 版本這一點依然能夠成立,如 Node-ChakraCore。

這個版本的 Node.js 還將對 http2 的支持作為 Node.js 核心的穩定部分,在 Node.js 8 版本系列中,這還是一個實驗性的特性。內置的支持已經構建在了流行的伺服器框架 Hapi 和 Koa 中,Express 則還需要一些額外的配置。開發人員如果想要了解這些工具的話,可以在 Rising Stack 的博客上查閱一個快速教程。

這個釋放版本是 10.x 發布線的第一個版本,在 2018 年 10 月它將成為新的長期服務(Long Term Service,LTS)發布線。LTS 通常能夠保證支持三年,按照發布日程將會支持到 2021 年。但是,按照 Node.js 的發布日程,最近的 LTS 版本(8.x)會提前過期(2019 年 12 月),這樣做是為了和 OpenSSL 1.0.2 的 End-Of-Life 保持一致。

新版本的 Node.js 還包含了錯誤處理、診斷和性能方面的提升。感興趣的開發人員可以參考 Node.js 博客上完整的發布說明,並在項目主頁上下載 Node.js 的發布版本。

為了與 Node.js 10 的版本發布保持一致,Node 包管理器(Node Package Manager,npm)也宣布釋放自己的主版本,即 6.0 版本。新的 npm 6.0 版本能夠用於之前版本的 Node.js,也能用於新的 Node.js 10.0.0,按照發布說明主要的升級理由在於安全性的增強:

不久,npm 註冊表的每個用戶如果使用具有已知安全問題的代碼的話,都會收到自動告警。npm 將會基於 NSP 資料庫自動檢查安裝請求,如果代碼包含安全漏洞的話,將會返回警告。

另外,npm@6 中的新命令「npm audit」不久就能遞歸分析你的依賴樹,以便於識別哪裡不安全,這樣的話,你就可以將依賴替換為新版本或者尋找一個更安全的依賴來替代它。

https://www.infoq.com/news/2018/04/node-10-npm-6-released-security


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

為什麼說Scrum並不適用於軟體開發?
「中芯」何時「中興」?

TAG:InfoQ |