私は標準的な認証状況を持っています...ビジターはlogin + passwordをフォームに入力し、PHPスクリプトはそれをデータベースで認証します。IE11/Edgeでsession_regenerate_id()が機能しません
このプロセスでは、リダイレクトの直前に顧客が正常に認証されたときにsession_regenerate_id(true)を追加します。 Chromeではすべてうまく動作しますが、一部のバージョン(すべてではない)ではIE11と最新バージョンのEdge(仮想ボックスで試しました - modern.ieからダウンロード)では動作しません。他のブラウザではうまくいかないかもしれません。
それがChromeで動作しない方法:ログインフォームで
- クライアントの負荷のページを - 彼はセッションID AAAを持つ
- クライアントがフォームを送信 - 要求が
- クライアントが認証されているセッションID AAAを持っています - (真)session_regenerate_idと呼ばれる
- 応答のSet-CookieやセッションID BBB(+所在地:YYY)は
- ブラウザはBBB セッションIDとYYYを要求すると
- 応答は、クッキーを設定し、そのセッションIDがBBB ある
- ていないクライアントは、それがIE11 /エッジで動作するどのよう
を認証されている:ログインフォームで
- クライアントの負荷のページを - と呼ばれる(真)session_regenerate_id - 要求は、セッションID
- クライアントが認証されているAAAを持っている - 彼は
- クライアントがフォームを送信セッションID AAAを持っています210
- 応答は、セッションIDをBBB(+所在地:YYY)クッキーに設定した
- をブラウザがAAA
- 応答は、クッキーを設定していないので、セッションIDがAAAでセッションIDをYYYに要求を行います
- クライアントが問題はセッションIDを再生成する場合、クライアントは認証できないので、セッションのAAAが、削除されていること、である
を認証されていません。
ロケーションヘッダーがなく、他のページへのリンク付きの静的ページを表示するだけでは機能しません。
ブラウザがSet-cookieを無視しているように見えます。
私がsession_regenerate_id()を削除すると、それは「うまくいく」と思えます。
どのようにそれが*安心*ですか? –
@FranzGleichmann - [セッションの固定](https://en.wikipedia.org/wiki/Session_fixation) – kluvi
大丈夫、何か新しいことを学んだ。ありがとうございました –