セッション固定攻撃は、どのような方法で攻撃してくるのでしょうか?
対策をしたいので、攻撃方法と対策方法を教えていただけないでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
攻撃手法は、任意のセッションIDを強制的に利用し、攻撃します。
なので、対策方法として、ログイン時の認証が成功した段階でセッションIDの
再発行を行えばよいです。
例えば、ログイン処理の実行、終了するプログラムには、
このようなプログラムをいれます。
`
//セッションスタート
session_start();
//ユーザIDがセッション変数に存在するかチェック。存在すれば、ログインユーザ専用ページ
//一部省略します..
//ログイン処理の実行 終了
$_SESSION['user_id'] = 1 //ダミーユーザIDをセッションに格納
session_regenerate_id (true); //セッションIDを再発行する
`
ユーザーIDを格納する前に、session_regenerae_id()関数を呼びだして、
セッションIDの再発行を行っています。
これにより、ログイン前と後でセッションIDが異なるため、攻撃されたとしても、
ログイン後のセッションを乗っ取られることはなくなります。
投稿2014/06/04 07:38
総合スコア83
0
セッション固定攻撃の攻撃手法について、補足します。
セッションを乗っ取るには、サーバから発行されるセッション ID を盗めばいいわけですが、言ってみれば会員制の施設に入る会員証みたいなもんですよね。普通のセッション乗っ取り攻撃犯は、どうにかしてこのセッション ID を盗み出すか(会員証を盗む)、に血道を上げるわけですが、セッション固定攻撃というのは、悪意を持った人が攻撃対象の人に、セッション ID を指定してそれを使って攻撃対象のシステムにアクセスするように仕向ける(会員証を作っちゃう)わけです。そしてそのままログイン成功し、なおかつログイン成功してもセッション ID が変更されないようなら、ログイン後のセッションを乗っ取ることができるわけです。
具体的には、たとえば、
0. 本物 (仮にサイト A とする) のそっくりの偽サイト(いわゆるフィッシングサイト)P を作る
0. サイト A の利用者 U を P に誘導し、セッション ID を決め打ちでサイト A にリダイレクトさせる
0. U がそのままサイト A にログインさせる。決め打ちで作ったセッション ID でサイト A を利用し、利用者 U を乗っ取る
とかになります。
ログイン成功時にセッション ID を再発行する、というのはもちろん有効であり、なおかつ当たり前にやるべき措置ですが、それは上の 3. に絡んだ部分です。それ以外に 2. の部分でも対策を施した方がよいです。
問題は、セッション ID を外部から決められる、というところです。これ、普通に考えておかしいですよね。これも大きく二つに分けられ、「セッション ID を本当に外部から決めることができる」「発行されるセッション ID が容易に推測できる」があるかと思います。前者は、PHP の設定次第では、?PHPSESSID=xxxyyyzzzz
とクエリにつけると、それをセッション ID として使ってしまう、というようなケースです。サーバ側では自分自身で発行した有効期限内のセッション ID 以外は突っぱねるべきです。後者は、セッション ID の生成方法が単純すぎる(たとえば、現在時刻に sha1 をかけただけ、とか) と、容易に推測できて有効なセッション ID を攻撃者が知ってしまう、というものです。
投稿2016/04/05 04:10
編集2016/04/05 10:12総合スコア2468
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。