🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

2173閲覧

session regenerate id セキュリティが理解出来てません。

cockatieho

総合スコア3

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2021/02/16 14:30

編集2021/02/18 23:29

session_regenerate_id(true)

上記で何故引数にtrueを入れてるのか
調べても漠然とtrueの方が安全だからとしか分かりませんでした。
ご教示お願いします。

修正・補足のご指示を頂いたので
参考側を貼らせていただきます。

https://blog.tokumaru.org/2013/10/should-1st-parameter-of-sessionregenerateid-function-be-true.html

上記リンクを『session_regenerate_id(true) なぜ 』とGoogle検索にて発見し、sessionを破棄してくれる?内容まで把握いたしました。
まだ理解が浅い上記ですのでご鞭撻願います。

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

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

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

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

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

m.ts10806

2021/02/16 14:55

念のため、どこをどう調べて「安全だから」と理解したか記載してください。
m.ts10806

2021/02/16 22:33

徳丸氏のところでしたか。なるほど。確か回答者としても活動はされてたはずなので、アドバイス得られるかもしれませんね。 「セキュリティー」のタグをつけられるとより広く見てもらえるようになります。
cockatieho

2021/02/18 23:28 編集

承知いたしました。 セキュリティータグを付けます。 ご指導ありがとうございます。
ockeghem

2021/02/20 12:41

参照記事の筆者ですが、私の記事には、「誤答(trueを指定しない方)に実質的な危険性があるわけではありません」としていますが、ここは読みましたか?
ockeghem

2021/02/20 14:48

参照されたブログ記事の著者ですが、「誤答(trueを指定しない方)に実質的な危険性があるわけではありません」という箇所は読まれましたか?
guest

回答2

0

まず、マニュアルを読むと良いですよ。
session_regenerate_id(true) が安全とは書いていません。
session_regenerate_id

delete_old_session

関連付けられた古いセッションを削除するかどうか。 削除による競合を防いだり、セッションハイジャックを 検出/防ぐ 必要がある場合には、古いセッションを削除すべきではありません。

とあり、さらに以下の記述もあります。

警告

現在の session_regenerate_id は、不安定なネットワークをうまく扱えません。 たとえば、モバイルネットワークや WiFi ネットワークです。 よって、 session_regenerate_id を 呼ぶことで、セッションの消失を経験するかもしれません。

すぐに古いセッションデータを破棄すべきではありませんが、 古いセッションID のタイムスタンプと、 アクセス制御は破棄すべきでしょう。 さもないと、ページへの同時アクセスによって、 状態の不整合が発生したり、セッションが失われたり、 クライアント(ブラウザ) 側のレースコンディションが発生したり、 不必要なセッションIDをたくさん作らなければならなくなるかもしれません。 セッションデータをすぐに破棄してしまうと、 セッションハイジャックの検出だけでなく、 防止もできなくしてしまいます。

session id を生成(再生成)するタイミングは、何らかの機密情報を session に保存する直前(例えば、認証済みの印を保存する等)が適切ですが、その際、必ずしも古い session id を破棄する必要は無いです。

投稿2021/02/19 01:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

参照されているURLのページにも記載されている通り、(google.com)セッションID固定化攻撃 の対策となります。

概要は「(IPA) 安全なウェブサイトの作り方 - 1.4 セッション管理の不備」の「セッションIDの固定化」のところを参照ください。

投稿2021/02/18 15:02

編集2021/02/18 15:06
Y.H.

総合スコア7918

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

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

cockatieho

2021/02/18 23:37 編集

参考をご提供いただきありがとうございます。 いただいた内容を活用しそもそもの、session_regenerateを使う目的の輪郭を濃くしようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問