2016-08-31 19 views
4

私は、npmパッケージマネージャを通して多くのNode.jsモジュールを使用しています。これらのモジュールは信頼できる組織によって開発されたものではないため、信頼性がありますか?npmモジュールをどのように信頼できますか?

npmチームが開発者が提出したモジュールごとにセキュリティチェックを行っているかどうかわかりません。

+0

私は確かにセキュリティのためにNPMからの期待はあまりありません。彼らは、この点に関して何度も無能であることを証明してきました。常に自分のセキュリティを確認してください。 –

答えて

7

NPMはこれまでどんな検査をしていません。彼らは単なるレジストリです。 すべてのことは、開発者コミュニティと共有の信頼に基づいて構築されています。

ほとんどのノードモジュールはオープンソースであり、リポジトリ(通常はgithub)でコードを確認できます。 それはそれらを「信用する」最良の方法です。 いくつかのノードモジュールはあらかじめビルドされたネイティブのバイナリを提供します。そのため、ある方法では危険になるかもしれませんが、(例えばwsのような)普及している場合は問題はありません。 また、oracleのような既知の会社であるnpmパブリッシャ・ユーザーを確認することもできます。

0

アイデアは、最も一般的なnpmモジュールを見つけることです。これは、各プロジェクトの星印をチェックすることで実行できます。

いくつかのヒント:

使用NPMはなく、デプロイメントスクリプトでは、あなたのdevの環境に依存関係を管理します。

npmのようなツールは開発ツールです。モジュールをダウンロードして更新する便利な方法です。これらはデプロイメントツールではなく、デプロイメントツールではありません。デプロイメントには使用しないでください!

npm shrinkwrapを開発リポジトリに使用し、結果をチェックインします。これは、サブの依存性を含む代わりに、あなたのモジュールのバージョン、あなたが信頼していないパッケージをインストールする場合は、あなたが

npm install --ignore-scriptsを実行することにより、この脆弱性を回避することができます

詳細here

+2

'shrinkwrap'で十分なはずですが、レポをフォークする必要はありません。 – Bergi

+0

あなたは正しいです!答えを – nikjohn

0

をロックします詳細は

はここhere

をチェック素晴らしいブログですあなたに明確な画像を与えることができますblog

0

npmから利用可能ないくつかのプログラムがあり、あなたのpackage.jsonに対して実行され、既知の脆弱性をチェックすることができます。完璧ではありませんが、素晴らしいスタートです。私が使ったものはnspと呼ばれていますが、他にもあります。

1

あなたのpackage.jsonからすべてのモジュールを監査するのに役立ちますNode Security Platformによって提供さnspツールを使用することができ

npm install nsp --global 
nsp check 

詳細情報はこちら:https://nodesecurity.io/opensource

0

はい!ほとんどすべてのノードモジュールはオープンソースなので、モジュールの後ろにあるコードスニペットを実際に見ることができます。これはあなたのアプリケーションで使用する意思のあるパッケージに信頼を築くのに役立ちます

0

これらのモジュールはphp/apacheのような組織では開発されていないため、あまり安全ではありません。 nspモジュールを使用して、ノードモジュールのセキュリティ問題をチェックすることもできます。

More info

1

実は私はずっとパッケージには使用しないでください。

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 (:

+0

私の答えをdownvoted賢明な心のいくつかの超甘い模倣... Ehhh私はちょうど私の考えを書いた。 – num8er

関連する問題