最も強力なCSRF保護の間に、フォームトークン保護があります。この方法について私が持っている質問は、使いやすさについてです。ユーザーがトークンを使用するフォームを含む複数のページを開くと、複数のトークンが生成されますが、最後に開いたページだけがフォームを正常に送信でき、他のすべてのページはエラーになります。
私は2つの解決策を考えました:
- セッションのすべての期間中、一意のトークンを保持します。
- 生成されたすべてのトークンをセッションに保存します。
だが:
- これはより現実的な解決策ですが、安全性は低くなります。
- これは、ユーザーが多くのページを開く可能性があるため、大きなリソースオーバーヘッドを生成し、生成されたすべてのトークンを保存する必要があります。
したがって、この質問をどのように解決しましたか?
PS私が開発しているウェブサイトは、実質的にPHPのeコマースであり、送金は外部プロバイダー(ペイパルなど)を介して管理されますが、私のサービスには十分な安全性があると思います。