私は、以下にリストされている一般的なセキュリティの懸念に対処するNode/Expressアプリに追加されるべきモジュールを探しています:
ご協力いただきありがとうございます!
私が見つけたいくつかのリソース:
すばらしい講演(2012年11月): http://lanyrd.com/2012/asfws/sxzbm/ (スライドを参照)
ServerFaultの質問(2011-2012): https://serverfault.com/questions/285123/is-node-js-mature-for-enterprise-security
トピックに関するブログ投稿(2012年9月): http://codefol.io/posts/29-Why-Rails-and-not-Sinatra-or-Node-js-
エクスプロイトテスター: https://code.google.com/p/skipfish/
Passportモジュール: https://github.com/jaredhanson/passport
EveryAuthモジュール: https://github.com/bnoguchi/everyauth
Writing Secure Express.js Apps の素晴らしい出発点となるブログ投稿を書きました。 zeMircoが言及したように、csrfとヘルメット以外にもいくつかのことをカバーしています。
もう1つは、express.jsとRailsを比較できないことです。彼らはリンゴとオレンジです。たとえば、ExpressにバンドルされているORMはありません。サードパーティモジュールの実装または使用はユーザー次第です。
各懸念事項の内訳をお伝えします。
-Injection Vulnerabilities (JavaScript, SQL, Mongo, HTML)
繰り返しますが、これらはエクスプレスに組み込まれていないものです。最も近いのは、テンプレートへのインジェクションに対するXSSの心配です。エクスプレス出力で一般的に使用されるJadeまたはEJSテンプレートは、デフォルトで<> "'および&をエンコードしますが、JavaScriptまたはCSSへのユーザー入力など、心配する必要がある他のコンテキストがあることを忘れないでください。
-Session fixation and hijacking
再び上記のブログ投稿を参照してください。ただし、Expressは connect ミドルウェアのほとんどに基づいており、これらの1つはセッションミドルウェアです。ここで最大のことは、Cookieフラグを適切に設定することです。
-Cross-Site Vulnerabilities (Scripting, Request Forgery)
上記を参照。 express.csrf()ミドルウェアも付属しています。前述のブログ投稿は、それを実装する方法を示しています。
-Mass Assignment
このタイプの脆弱性を適用できる概念はないため、express.jsの問題ではありませんが、実際に作成するカスタムロジックはこの問題に対して脆弱である可能性があります。そのため、コードが脆弱であるか使用したサードパーティモジュールが...
警戒する必要があるのは、bodyParserです。 http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html を参照してください
キャッチオールエラーハンドラーを指定する場合は、サーバーを再起動したり、USERエラー(4xx
範囲)DOSの脆弱性につながる可能性があるため。この脆弱性は、express-error-handler
、およびサービスはできる限り早く(アクティブな接続が空になったとき、またはタイムアウトが発生したときに)シャットダウンするため、再起動は大したことではありません。この動作を実装すると、エクスプロイトテストに大きな違いが生じました。
ところで、未処理のエラーをすべて無視するのは安全ではありません。これにより、アプリケーションが未定義の状態になり、別の種類のDOS脆弱性が発生します。