0

新しいプロジェクトに CSRF 保護を実装しようとしていました。すべてのフォームにセッショントークンを作成して同じことを行い、トークンはフォームの非表示フィールドに保存されます。フォームが送信されるたびに、POST のトークンとセッションのトークンが同じかどうかを確認します。それらが同じである場合、必要なアクションが実行され、セッション トークンが更新されます。

うまく機能しますが、送信されたページを更新すると実際の問題が発生します。その後、トークンの不一致が発生します。

私の質問は、フォームごとに単一のトークンを使用し、フォーム送信ごとにトークンを更新せずに安全ですか? これで CSRF を防ぐことができますか?

4

1 に答える 1

0

はい、CSRF トークンを更新する必要はありません。ユーザーセッションごとに一意である必要があります。

攻撃者が非表示のフォーム フィールドの値を読み取る方法がないため、セッション中に同じ値が再利用される可能性があります。この値を更新しても、追加のセキュリティは実現されません。

ただし、ユーザー セッションごとに一意の値にする必要があります。ユーザーごとに異なるトークンを使用する必要があります。同じユーザーが再度ログインする場合は、前のトークンを期限切れにすることをお勧めします。

于 2014-01-06T15:28:10.560 に答える