質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

1回答

311閲覧

セッションクッキーからサーバー側のセッションの値は推測できるのか?

hososo

総合スコア34

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

2クリップ

投稿2019/04/30 13:23

編集2019/05/04 08:13

簡単なWEBチャットを制作しています。そこでセッションについてわからないことがあるので質問しました。

以下のようにクライアントにセッションを付与した場合、

js

1const express = require('express'); 2const app = express(); 3const session = require("express-session"); 4 5app.use(session({ 6 secret: 'JDcf48Dc566', //セッションの暗号化に使うキー 7 resave: false, 8 saveUninitialized: false, 9 cookie: { maxAge: 1000*60*30 } 10})); 11 12// ログイン 13app.post('/login' , function(req, res){ 14 req.session.userId = 1;// セッションを埋め込み 15 console.log(req.session.userId); // 1 16});

このときセッションクッキーは"s%3Ah6R5h_7vQIYn4C_LJ5iFWfAZdSAAbl1T.EnszGazCiZgxrDoM89UckKWX1t0M2irxJ6BTIL4ZKGE"など暗号化されているのですが、もともとは1を代入しただけです。このとき、上記の"s%3Ah6R...IL4ZKGE"からサーバー側の1という単純な値は推測されてしまうでしょうか?もっと複雑な値にするべきでしょうか?(現在の設計ではuserIdはmysqlでauto_incrementした連番となっております。)

なるべく具体的に書きましたが、つまるところセッションクッキー("s%3Ah6R...IL4ZKGE")からサーバー側のセッションの値(req.session.userId = 1)を推測できてしまうかということです。

不足情報があればご教示ください。拙い文章ですが、回答よろしくお願い致します。

バージョン

node: 8.11.3
express: 4.16.4
express-session: 1.16.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

express-sessionを使ったことはないですが、ログイン毎とかにcookiesの値は変わりますよね?
推測は難しいと思います。

気になるのであれば、
secure: trueを付与するなどすればいいと思います。

https://github.com/expressjs/session#cookiesecure

投稿2019/05/10 02:13

odyu

総合スコア548

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hososo

2019/05/11 15:41

回答ありがとうございます。ログイン毎には変更になっております。推測は難しいのですね。勉強になりました。貼ってくださったリンク先を熟読してみうようと思います。重ねて御礼申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問