[解決済み] connect/expressjsの "signed "cookieとは何ですか?
質問
署名入りクッキーとは何なのか、知りたいのです。 ネット上にはあまり情報がなく、これを試すと。
app.use(express.cookieParser('A secret'));
それにしても・・・。Cookie はブラウザ上ではまだ 100% 正常で、ここで "signed" が何なのかよくわかりません (私はクライアント上で何か奇妙なこと、たとえば "A secret" を salt として使用してデータを暗号化するようなことを "see" 期待していたようなものですが?)。
ドキュメントによると、( https://github.com/expressjs/cookie-parser ):
構文解析 クッキー ヘッダを解析し
req.cookies
にクッキーの名前をキーとしたオブジェクトを入れます。オプションとして を渡すことで、署名付きクッキーのサポートを有効にすることができます。 asecret
文字列を渡すことで、署名付きクッキーのサポートを有効にできます。req.secret
というように を割り当て、他のミドルウェアで使用できるようにします。
どなたかご存知ですか?
メルカリです。
どのように解決するのですか?
クッキーはまだ見えますが、署名があるので、クライアントがクッキーを変更したかどうかを検出することができます。
これは HMAC を作成し、それをbase64でエンコードします。クッキーが読み込まれたとき、署名を再計算し、それに付けられた署名と一致するかどうかを確認します。
もし一致しなければ、エラーを出します。
クッキーの内容も隠したいのであれば、代わりに暗号化する(もしくはサーバ側のセッションに保存するだけ)。そのためのミドルウェアが既にあるのかどうかは分かりませんが。
Edit
また、署名入りクッキーを作るには
res.cookie('name', 'value', {signed: true})
また、署名されたクッキーにアクセスするには
signedCookies
オブジェクトを使用します。
req
:
req.signedCookies['name']
関連
-
[解決済み] エラー: nodejs の get 呼び出しで getaddrinfo ENOTFOUND が発生しました。
-
[解決済み】MongoDBのデータ/DBが見つからない
-
[解決済み】モジュール '@babel/core' が見つかりません。
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] ローカルストレージとCookieの比較
-
[解決済み] エラーが発生しました。クライアントに送信された後にヘッダーを設定できない
-
[解決済み] localStorage、sessionStorage、session、cookieの違いは何ですか?
-
[解決済み] ExpressJS アプリケーションをどのように構成するか?
-
[解決済み】Cookieに使用できる文字は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"npm update -g" の後に "Cannot find module 'npmlog'" というエラーが発生する。
-
[解決済み】MongooseでEnumを作成し使用する方法
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み】Mongooseで、日付でソートするにはどうしたらいいですか?(node.js)
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] nodeファイルの先頭にある"/usr/bin/env node "は、具体的には何をするのですか?
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] ノードマータ予期せぬフィールド
-
[解決済み] Express.js req.bodyが未定義です。