2

Mozilla は、Java EE バンキング アプリケーションのセッションを復元できます (クラッシュ時、セッション復元オプション)。

コードを書いて mozilla がセッションを復元できないようにする方法はありますか? または、セッションの復元時に出てくるリクエストを特定し、ユーザーに再度ログインを強制することは可能ですか?

4

4 に答える 4

2

私は同じ問題を調べています。

ブラウザに古いセッションを復元させるのは一般的に悪い考えだと思います。ただし、キャッシュ制御ヘッダーの設定など、いくつかのことを試しましたが、うまくいきません。

だから私は実際にスクリプトでこれを修正することを考えていました.

ただし、さまざまなソリューションでさまざまな問題が発生します。

1) ブラウザを閉じるときに Cookie を削除 --> 問題: http_only を false に設定する必要があるため、脆弱性を追加する JavaScript を使用してこれを行う必要があります。

2) cookie_lifetime を 0 (ブラウザーが閉じるとき) から、たとえば 3600 (1 時間) に設定します。--> 問題: これを高く設定するとセキュリティが失われ、低く設定すると、ユーザーは「セッションの有効期限が切れました」というエラー メッセージが表示され、再度ログインする必要があります。

3) 有効期限のある 2 番目の Cookie を追加します。Cookie が存在する場合は、すべて問題ありません。--> 問題: (ほぼ) 2 と同じです。これは、Cookie を設定した後に有効期限を変更できる場合にのみ機能します。この場合、ユーザーは少なくとも XX 分間アクティブなままにしておく必要があります。そうしないと、セッションが失われます (私には正しいようです)。

私自身、後者を見ていきます。

したがって、この場合、私は (Java ではなく) PHP を使用していますが、一般的な考え方は同じだと思います。

//create expiration cookie
private function setExpireCookie(){

    //expire cookie: name, value, expiration in seconds, path, domain, https, http-only
    setcookie("Test_Expire", "Expire", time()+3600, "/test", null, false, true);
}

//check if expiration cookie exits
private function expireExists() {

    return isset($_COOKIE['Test_Expire']);

}

//set the session check for expiration cookie
private function getSession() {

    //does the session cookie exists and the expiration cookie doesnt?
    if (!$this->expireExists() && isset($_COOKIE['Test_Cookie'])) {

        //to remove the cookie by setting the expiration time before now
        setcookie("Test_Cookie", $_COOKIE['Test_Cookie'], time()-3600, "/test");
    }

    //now we can set the new expiration cookies en start the new session
    $this->setExpireCookie();

    //set cookie params: lifetime, path, domain, https, http-only
    session_set_cookie_params(0, "/api", null, false, true);

    session_name('Test_Cookie');

    //start session
    session_start();
}

これは私にとってはうまくいきます。うまくいけば、これをJavaに適用できます

于 2013-03-25T10:56:23.630 に答える
0

そのような方法はまだ存在していないようです(2013年3月4日現在)。ブラウザ開発者がSessionRestoreがセキュリティホールを開くことを理解することを期待しましょう。

于 2013-03-04T08:50:22.020 に答える
0

それがあなたの質問に直接答えるかどうかはわかりませんが、以前のセッションの復元をオフにすることができます。詳細は、mozilla の以下のリンクを参照してください。

http://support.mozilla.org/en-US/kb/restore-previous-session#w_configuring-session-restore

于 2012-10-29T18:16:02.827 に答える