PHP のトークンをすべてのフォームの隠し入力に含めることで、CSRF 保護を実装しました。もちろん、各トークンは 1 回しか使用できません。
ただし、入力を変更できる Web 開発者ツールなどのツールがあります。たとえば、ページ上の入力フォームを変更できます。無効になっているチェックボックスを有効にしたり、ページをリロードしたりせずに入力ボックスをテキストエリア ボックスに変更したりできます。CSRF はそのような変更をキャッチしません。
では、安全を確保するためには、どの程度のフォームを検証する必要があるのでしょうか? 選択、チェックボックス、非表示の入力など、変更されていないことを確認するために、すべての入力を検証する必要がありますか? これらが変更されていないと仮定するのは安全ではないでしょうか?