Lab 01 の指摘を受けて、うつろい EC はログインエラーメッセージを統一した。
「メールアドレスまたはパスワードが正しくありません」のみ。一見対策完了。
しかしサーバ内部のロジックは:
if user = lookup_user(email):
if password_hash_verify(user.password_hash, input_password): # ~250ms
login_success()
else:
return error # 検証は走った
else:
return error # 即座に返る
ハッシュ検証は遅い(bcrypt で 200〜300ms)。応答時間の差から、ユーザの存在/不在が判別できてしまう。