Recoveryはaccount security stateを変える
Password Resetメールをテンプレートではなくsecurity flowとしてテストする方法
request、token使用、password変更、replay、最終loginまで追い、メール到着だけでrecovery成功と判断しません。
Resetメールが正しく見えても、tokenが再利用できる、古いlinkが新しいrequest後も使える、旧passwordがpolicyに反して残るといった不具合はあり得ます。メールを一時credentialを運ぶ1ステップとして扱い、account recovery全体を検証します。
known stateから始める
- 1
専用test accountを使う
初期password、address、sessionを把握します。
- 2
resetを1回だけrequest
時刻とidentityを記録します。
- 3
secret全体を保存せずURLを確認
host、route、environmentで多くの診断ができます。
- 4
public flowでpassword変更
DB直接変更で成功を作りません。
- 5
最終認証を確認
新旧passwordとsession policyをassertします。
独立して検証するsecurity property
| Property | Positive | Negative |
|---|---|---|
| Expiration | fresh token works | expired fails |
| Single use | first works | replay follows policy |
| Supersession | new token policy | old token cannot bypass |
| Binding | right account changes | other identity unaffected |
| Session | post-reset state correct | old session removed when required |
OWASP guidanceをblack-box caseにする
OWASPはreset tokenをrandom、十分な長さ、安全なstorage、期限付き、single-useにし、valid tokenの提示前にaccountを変更しないよう求めています。
QAではexpiration、replay、invalid token後のstate unchangedなどとして確認できます。
安全なdiagnostic
- identity/environment
- request time
- sanitized host/route
- first use/replay
- old/new login
- session state
正しいaccountが正しいtokenで一度だけ回復し、その後のsecurity stateが仕様どおりであればreset flowは健全です。
手動メールQA用のクリーンな受信先が必要ですか?
MailOnceで、個人の受信箱をテストデータとして使わずに、登録、OTP、マジックリンク、パスワード再設定、通知メールを確認できます。
使い捨てメールを作成参考資料と追加情報
テスト指針の根拠として使用したセキュリティ資料とテストランナーの一次ドキュメントです。
次のテストへ
同じメールテスト領域にある次の境界を確認します。