ログイン時にPHPセッションを使用してユーザーIDを決定し、長期ログイン用のCookieを使用するフォーラムを作成しました。
2 つの質問があるとします。
- これは最善/最も安全な方法ですか?
- Cookie は JavaScript を使用してアドレス バーから手動で追加できますが、これは大きなセキュリティ リスクです。これを回避する方法はありますか?
ありがとう!
まず、http ではなく https を使用していることを確認します。これにより、トラフィックが傍受されて悪用されるのを防ぐことができます。
次に、Cookie でトークンとして使用する値をできるだけランダムに生成します。これは、多くの大手サイトがユーザー トラッキングを行っている方法です。ID を追跡するサーバー側のユーザーへのトークンのマップを用意します。注意: クライアントから送信されるものはすべて信頼されておらず、改ざんされる可能性があります。
3 番目に、HMACを使用して、改ざんをより困難にします。ユーザーが他のトークンをブルート フォースできるようにしたくありません。
編集:
このシステムを構築する際に、これらの他の SO の質問/回答が役立つ場合があります。
トークンの作成と使用に関する詳細 (必ずしも REST サービスである必要はありません): REST Web サービス認証トークンの実装
適切なトークンの作成 (マイクロタイムを使用しないでください): microtime() を使用してパスワード リセット トークンを生成するのは悪い習慣です