0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

画面を開くたびに、ログイン認証におけるトークンの有効期限確認は、フロントエンドとバックエンドのどちらでやるべきか

Last updated at Posted at 2024-05-16

フロントエンドでの確認

利点

・ユーザー体験が向上する
 →即時にフィードバックを提供できるため
・サーバーの負荷が軽減される
 →サーバーとの通信が不要になるため

欠点

・セキュリティリスクが高い
 →トークンの有効期限情報がクライアント側に存在するため、改ざんのリスクがある

・正確性に欠ける可能性がある
 →クライアントの時計が不正確な場合など

バックエンドとの通信での確認

利点

・セキュリティが強化される
 →トークンの有効期限情報はサーバー側で管理され、改ざんのリスクが低い
・トークンの正確な状態を常に把握できる
 →サーバー側で一元管理されるため

欠点

・サーバーの負荷が増加する
 →クライアントごとに頻繁に通信が発生するため
・レスポンス時間が長くなる可能性がある
 →通信に時間がかかるため

ChatGPTの見解

バックエンドとの通信で確認する方法が一般的に推奨されます。
理由としては、「セキュリティ強化」!

具体的な実装方法としては以下のようなアプローチがあります:

①APIリクエスト時にトークンを検証

・クライアントからの各リクエストにトークンを添付し、バックエンドでその都度トークンを検証します。
・トークンが無効(例:期限切れ、改ざんなど)の場合、バックエンドは適切なエラーレスポンスを返します。

②定期的なトークン検証

・クライアント側で一定の時間ごとにバックエンドへトークンの有効性を確認するリクエストを送信します。
・トークンが有効であれば新しいトークンを発行する(リフレッシュトークンを使用する方法も含む)。

セキュリティ強化のための追加対策

・HTTPSを使用して通信内容を暗号化する。
・リフレッシュトークンを使用し、アクセストークンの有効期限を短く設定する。
・CORS設定を適切に行い、不正なアクセスを防ぐ。
・CSRFトークンを使用し、クロスサイトリクエストフォージェリ攻撃を防ぐ。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?