0

ログイン時に HTTPS に切り替え、ログアウト時に HTTP に戻る Web ページがあります。セキュリティを強化するために、セッション Cookie はログイン時にセキュア (HTTPS) に設定されます。私のログアウトページはかなり標準的で、次のコードがあります:

session_start();

$_SESSION = array();
$params = session_get_cookie_params();
setcookie(session_name(), "", time() - 42000, $params['path'], $params['domain'], $params['secure'], $params['httponly']);

session_destroy();
require("/var/www/include/logout_success.php");

最近応答ヘッダーを調べ始めるまで、私はその影響についてあまり考えていませんでした。session_start()ページが HTTP に戻ったときに呼び出すと、安全な Cookie をオーバーライドする新しいセッション Cookie が作成されるように見えます。

これは、setcookiesession_destroyが古いセッションではなく新しいセッションに作用している可能性があることを意味します。サーバーに保存されている古いセッション データが適切に破棄されない可能性があることを懸念しています。

この場合、HTTP ログアウト ページをコーディングして、古いセッション データが実際に破棄されるようにするにはどうすればよいでしょうか。

4

1 に答える 1

1

require「ログアウト成功」コンテンツを含めるためにを実行する代わりに、 を実行しHeader("Location: http://domain/path-to-logout-success.php")ます。

HTTPS ネゴシエーションが発生すると、「他の」プロトコルの Cookie を設定できなくなります。ユーザーのブラウザが「他の」プロトコルを要求した場合にのみ、Cookie を設定できます。

于 2013-09-02T05:01:49.953 に答える