セキュリティ難易度 応用

状況

Web アプリのログイン処理を作っている。パスワードはユーザーごとのソルトを付けて、遅いハッシュ関数でハッシュ化して保存してある。

ログインを処理する順番に並べてください。

正答

  • セッション ID を新しく発行し直す
  • 入力のパスワードを同じソルトと設定でハッシュ化する
  • ユーザー名で保存済みのハッシュとソルトを取り出す
  • 計算したハッシュと保存済みのハッシュを比べる
正しい順番
  1. ユーザー名で保存済みのハッシュとソルトを取り出す
  2. 入力のパスワードを同じソルトと設定でハッシュ化する
  3. 計算したハッシュと保存済みのハッシュを比べる
  4. セッション ID を新しく発行し直す

解説

保存済みのハッシュとソルトを取り出さないと、入力を同じ条件でハッシュ化できない。計算した値を保存済みの値と比べ、一致したらログイン成功になる。セッション ID の発行し直しは、成功が確定した後に行う。ログイン前の ID を使い続けると、攻撃者が事前に仕込んだ ID でログイン状態を乗っ取られる(セッション固定攻撃)。比べる前に ID を発行し直しても、失敗したログインのたびに無駄に ID が変わるだけで、固定攻撃の対策としての意味は無い。

参考: cheatsheetseries.owasp.org

passwordhashsessionlogin

この問題を含む セキュリティ のテストを制限時間つきで解く

セキュリティクイズへ