認証テストチェックリスト:AIコーディングツールが認証において犯しがちなミス
Yunhao Jiao2 分で読めます

認証と認可は明示的なテストが必要です。一見正常に見えるログインフローでも、アカウントやデータが漏洩するリスクがあるためです。リリース前に、許可された操作と拒否された操作の両方をテストしてください。
これを出発点となるチェックリストとして活用してください。しきい値とセッションルールはプロダクトに合わせて調整し、各テストのリクエスト・期待ステータス・実際の結果を記録してください。
ログインフロー
- 有効な認証情報でアクセスが許可され、セッションが作成される
- パスワードが誤っている場合、「パスワードが違います」とは示さない汎用的なエラーメッセージが表示される
- 繰り返しの失敗により、設定されたロックアウトまたはスロットリングルールが発動します。しきい値と回復経路を検証してください。
- 繰り返しのログインリクエストが設定された上限を超え、期待どおりのレート制限レスポンスが返されます。
- 「ログイン状態を保持する」を選択すると、永続セッションが正しく作成される
- ログイン後、元々アクセスしようとしていたページにリダイレクトされる
セッション管理
- ページをリロードしてもセッションが維持される
- 設定されたタイムアウト後にセッションが期限切れになる
- 期限切れセッションは適切にリダイレクトされる(壊れた状態にならない)
- ログアウト後、古いセッショントークンを使って保護されたAPIにアクセスします。このリクエストは拒否される必要があります。
- セッショントークンがURLに露出しない
パスワードセキュリティ
- パスワードがbcrypt/scrypt/argon2でハッシュ化されている
- ユーザーごとに固有のソルトが使用されている
- リセットトークンは1回のみ有効で、再利用時および有効期限切れ後は失敗します。
- パスワード変更時に旧パスワードが必要である
認可
- セッションなしで各保護ルートおよびAPIに直接アクセスすると、拒否応答が返されます。
- ユーザーAのセッションでユーザーBのレコードをリクエストすると、拒否応答が返され、プライベートデータは取得されません。
- ロールベースのアクセス制御がフロントエンドのルートとAPIエンドポイントの両方で適用されている
- 管理者以外のセッションは管理者エンドポイントへのアクセスが拒否され、管理者セッションでは成功します。
APIアサーションや代表的なUIフローを含め、テスト環境でサポートされているチェックを自動化してください。レート制限やトークン処理などのセキュリティ制御には、専用のフィクスチャや手動レビューが必要な場合があります。すべての項目がデフォルトでカバーされると想定しないでください。
リクエストの詳細、期待される動作、および実際のレスポンスとともに失敗を記録します。修正後に再テストを行います。
TestSpriteを無料で試す →
