-1

よし、ローカルホストでセッション固定/ハイジャックをテストしようとしています。

SID を含む URL を攻撃者から被害者に提供し、被害者がその URL にログインできるようにしようとしています。しかし、被害者がログインすると、攻撃者はページを更新し、まだログイン ページにいます。

次に、ブラウザに 2 つのログイン タブがある場合、被害者はタブ 1 でログインしますが、タブ 2 は更新後に自動ログインしないことを発見しました。攻撃者がログイン ページにとどまっているのはおそらくそのためでしょうか。

私の質問は、ユーザーが 1 つのタブで既にログインしている場合、他のタブでユーザーを自動ログインさせるために、php ファイルで何をしなければならないかということです。 この種の場合、どのキーワードを参照すればよいですか?

4

1 に答える 1

0

セッションは Cookie を使用して、ユーザーがログインしているかどうかを記憶します。セッションを開始すると ( session_start())、サーバーは一意のセッション ID を持つセッション Cookie を送信します。ユーザーがログインを必要とするページを要求すると、サーバーは ID を含む Cookie をチェックして、それが有効であることを確認します。

セッション固定化とセッション ハイジャックは非常に似ていますが、主な違いはセッションがどのように侵害されるかにあります。URL に SESSID を含めないでください。ハッキングを求めているだけです。代わりに、ユーザーがログインしているときにセッション変数を作成することをお勧めします
。EG:

自動ログイン: コードを確認

session_start();
if(isset($_SESSION['logged_in'])){
    header("location:loginonlypage.php")
}

セッションのハイジャック/修正の防止:
ただし、セッション ID が URL に含まれていないからといって、セッションのハイジャック/修正が発生しないわけではありません。これを防ぐためのセーフガードとしてユーザーの IP を使用します。また、セッション Cookie を HTTP のみに設定して、Javascript が Cookie を食べたがらないようにしてください :)

ini_set('session.cookie_httponly', 1); //SET HTTP ONLY COOKIE
    if (!isset($_SESSION['last_ip'])) {
        $_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
    }

    if ($_SESSION['last_ip'] !== $_SERVER['REMOTE_ADDR']) {
        session_unset();
        session_destroy();

    }
于 2015-11-03T09:33:06.820 に答える