Expressのセキュリティ設定
helmetモジュールでHTTPに於ける脆弱性となるヘッダを取り除く
対応前の確認
- プロジェクトの生成とExpressに必要なnpmパッケージのインストール
$ express express-helmet
$ cd express-helmet/
$ npm install
- サーバーの起動
$ DEBUG=express-hlmet:* PORT=8000 npm start
デベロッパーツール→Network→再読込み→localhost選択→Headersタブを見ると、
X-Powered-By:Expressと書かれており、このWebサービスがExpressで開発されていることが分かってしまう。
もしExpressに脆弱性があるとわかったときに攻撃対象にされる危険性がある。
このためX-Powered-Byというヘッダは送信しないほうが安全。
helmetのインストール
$ npm install helmet --save
app.jsの修正
- モジュールの読み込みとappオブジェクトのuse関数でhelmetを使うようにする
var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); +var helmet = require('helmet'); var index = require('./routes/index'); +var users = require('./routes/users');
対応後の確認
- サーバー起動
$ DEBUG=express-hlmet:* PORT=8000 npm start
デベロッパーツール→Network→再読込み→localhost選択→Headersタブ
X-Powered-By:Expressが消える
まとめ
フレームワークによって自分で実装しなくて済む