私はPHPに不慣れではありませんが、認証には常にセッションを使用していました。今度はステートレス認証を行いたいので、セッションを使用できません。サーバーインスタンスが多数ある可能性があり、セッションデータを共有しないため、データベースにセッションテーブルがあります。以下:
- クライアントのマシンにトークンを含むCookieを保存します
- セッションテーブルにGUIDのようなトークン列を設定して、同じトークンを持つすべてのエントリにクライアントがアクセスできるようにします。
- また、クライアントのIPを保存して、トークンが同じでIPが異なるユーザーがデータを読み取れないようにします。
このようなもの
id | token | ip | key | data
1 | a-guid | 190.0.0.1 | username | encrypted-data
2 | a-guid | 190.0.0.1 | is_logged | more-encrypted-data
3 | other-guid | 190.2.2.2 | is_logged | some-more-data
したがって、トークンa-guidとip 190.0.0.1のCookieを持つユーザーは、ユーザー名と*is_logged*にアクセスできます。
しかし、セキュリティについてはよくわかりません。誰かがあなたのCookieとIPからトークンを取得でき、その人がCookieトークンとIPを使用してリクエストを送信できれば、アカウントに完全にアクセスできるようになります。
特別な考慮事項がありますか?