私は、npmパッケージマネージャを通して多くのNode.jsモジュールを使用しています。これらのモジュールは信頼できる組織によって開発されたものではないため、信頼性がありますか?npmモジュールをどのように信頼できますか?
npmチームが開発者が提出したモジュールごとにセキュリティチェックを行っているかどうかわかりません。
私は、npmパッケージマネージャを通して多くのNode.jsモジュールを使用しています。これらのモジュールは信頼できる組織によって開発されたものではないため、信頼性がありますか?npmモジュールをどのように信頼できますか?
npmチームが開発者が提出したモジュールごとにセキュリティチェックを行っているかどうかわかりません。
NPMはこれまでどんな検査をしていません。彼らは単なるレジストリです。 すべてのことは、開発者コミュニティと共有の信頼に基づいて構築されています。
ほとんどのノードモジュールはオープンソースであり、リポジトリ(通常はgithub)でコードを確認できます。 それはそれらを「信用する」最良の方法です。 いくつかのノードモジュールはあらかじめビルドされたネイティブのバイナリを提供します。そのため、ある方法では危険になるかもしれませんが、(例えばwsのような)普及している場合は問題はありません。 また、oracleのような既知の会社であるnpmパブリッシャ・ユーザーを確認することもできます。
アイデアは、最も一般的なnpm
モジュールを見つけることです。これは、各プロジェクトの星印をチェックすることで実行できます。
いくつかのヒント:
使用NPMはなく、デプロイメントスクリプトでは、あなたのdevの環境に依存関係を管理します。
npmのようなツールは開発ツールです。モジュールをダウンロードして更新する便利な方法です。これらはデプロイメントツールではなく、デプロイメントツールではありません。デプロイメントには使用しないでください!
npm shrinkwrap
を開発リポジトリに使用し、結果をチェックインします。これは、サブの依存性を含む代わりに、あなたのモジュールのバージョン、あなたが信頼していないパッケージをインストールする場合は、あなたが
npm install --ignore-scripts
を実行することにより、この脆弱性を回避することができます
詳細here
npmから利用可能ないくつかのプログラムがあり、あなたのpackage.jsonに対して実行され、既知の脆弱性をチェックすることができます。完璧ではありませんが、素晴らしいスタートです。私が使ったものはnspと呼ばれていますが、他にもあります。
あなたのpackage.jsonからすべてのモジュールを監査するのに役立ちますNode Security Platform
によって提供さnsp
ツールを使用することができ
npm install nsp --global
nsp check
詳細情報はこちら:https://nodesecurity.io/opensource
はい!ほとんどすべてのノードモジュールはオープンソースなので、モジュールの後ろにあるコードスニペットを実際に見ることができます。これはあなたのアプリケーションで使用する意思のあるパッケージに信頼を築くのに役立ちます
これらのモジュールはphp/apacheのような組織では開発されていないため、あまり安全ではありません。 nsp
モジュールを使用して、ノードモジュールのセキュリティ問題をチェックすることもできます。
実は私はずっとパッケージには使用しないでください。
1)
2を発現する)身体&クッキーパーサ(時々私はミドルウェアを書くことが怠惰なよ)、
3)マングース、
4)パグ、
5)要求、
6)非同期、
7)lodash、
8)文字列
他のすべて私は自分自身を書いて "components"フォルダに入れます。
のがいいように怠惰な人々のほとんどを言わせて:
const md5 = require('md5');
let data = 'something';
data = md5(data);
が、私は(それがすべてnodejsのバージョンに含まれ、デフォルトではだ)crypto
でそれを行う:
const crypto = require('crypto');
let data = 'something';
data = crypto
.createHash('md5')
.update(data.toString())
.digest('hex');
私はしないようにロジックを保ちますパッケージを使用する:
1)パッケージが小さい場合(私はパッケージファイルがわからない場合は常に読みます)
2)バージョンがリポジトリにさらに移動します(無保証)
3)なし最近の反復(コミット)1.0.0より上ではないん
ところでnsp check
私のアプリケーションの言う:(+) No known vulnerabilities found
(:
私の答えをdownvoted賢明な心のいくつかの超甘い模倣... Ehhh私はちょうど私の考えを書いた。 – num8er
私は確かにセキュリティのためにNPMからの期待はあまりありません。彼らは、この点に関して何度も無能であることを証明してきました。常に自分のセキュリティを確認してください。 –