0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Express.jsのcookie-sessionのデフォルトハッシュ関数がSHA1なのでSHA2以降に変える

Last updated at Posted at 2023-04-07

Express.jsには、Cookieに署名付きデータを保存することでセッション管理を実現するライブラリとして、cookie-sessionがあります。

cookie-sessionがデフォルトで署名に使っているハッシュ関数を調べていくと、SHA1であることがわかります。SHA1は脆弱性が報告されており、自プロダクトのセキュリティ機能の説明を求められる昨今、わざわざ使うべきではありません。

cookie-sessionではREADMEのUsing a custom signature algorithmにある通り、keys属性にKeygripのインスタンスを与えることで、ハッシュ関数を変更できます。

var cookieSession = require('cookie-session')
var express = require('express')
var Keygrip = require('keygrip')

var app = express()

app.use(cookieSession({
  name: 'session',
  keys: new Keygrip(['key1', 'key2'], 'SHA384', 'base64')
}))

// ... your logic here ...

急にでてきたKeygripですが、これは署名付きデータを生成するライブラリで、cookie-sessionではこれをcookiesというライブラリを介して間接的に呼んで署名付きデータを生成しています。このKeygripのデフォルトハッシュ関数がSHA1なので、cookie-sessionでもデフォルトがSHA1になっています。KeygripはNode.jsのcryptoモジュールのcreateHmacを呼び出します。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?