- クッキーの存在を確認し、ない場合は
401 Unauthorizedを返す。 access_tokenとrefresh_tokenの有無をチェック。
supabase.auth.setSessionでセッションを確認。- 無効な場合は
refreshSessionで新しいトークンを取得。 - リフレッシュに失敗した場合は
401 Unauthorizedを返す。
HttpOnly: JavaScript からのアクセスを禁止し、XSS 対策。Secure: HTTPS 接続のみ許可し、盗聴防止。SameSite=Lax: CSRF 対策。
401 Unauthorizedや500 Internal Server Errorを適切に返す。- 詳細なエラー情報を含め、意図しない情報漏洩を防ぐ。
- 無効なリフレッシュを防止し、新しいトークンを安全に発行。
本実装では、以下のセキュリティ対策が適用されている。
| 対策 | 内容 |
|---|---|
| クッキーの検証 | クッキーがない場合は 401 を返す |
| トークンのチェック | access_token と refresh_token の有無を確認 |
| トークンのリフレッシュ | 無効なセッションの場合は refresh_token を使用 |
| セキュアなクッキー設定 | HttpOnly, Secure, SameSite=Lax を設定 |
| エラーハンドリング | 明確なエラーレスポンスを返し、不正アクセスを防ぐ |
| リフレッシュトークンの適切な取り扱い | 無効なリフレッシュを防止し、新しいトークンを発行 |
この実装により、XSS, CSRF, セッション固定攻撃、不正リクエストを防ぐ 仕組みが整っている。
- メールアドレスの確認により、虚偽のアカウント作成やなりすましログインを防ぐ。
- 本人確認が完了するまでアカウントを有効化しない。
- パスワードリセット時にメール認証を行い、不正アクセスを防止。
- 多要素認証(MFA)と組み合わせることで、さらに安全性を向上。
- メール認証を必須化し、大量のボットアカウントやスパムアカウントの作成を抑制。
- 新しいデバイスや異常なログインを検出し、ユーザーへ警告メールを送信。
- 実在するユーザーのみが登録できるようになり、システム全体の信頼性を向上。
- リカバリーメールを活用し、安全なアカウント復旧を可能に。