「チャレンジトークン」を使用すると、どのような種類の予防策が追加されるのかわかりません。どの値を何と比較する必要がありますか?
OWASPから:
一般に、開発者は現在のセッションでこのトークンを1回だけ生成する必要があります。このトークンの最初の生成後、値はセッションに保存され、セッションが期限切れになるまで後続の各要求に使用されます。
プロセスを正しく理解していれば、これが起こります。
http://example.comにログインすると、このランダムトークンを含むセッション/Cookieが作成されます。次に、すべてのフォームには、フォーム送信時にセッション/ Cookieと比較される、セッションからのこのランダムな値も含む非表示の入力が含まれます。
しかし、それは何を達成しますか?セッションデータを取得してページに配置し、まったく同じセッションデータと比較するだけではありませんか?循環論法のようです。これらの記事では、「同一生成元ポリシー」に従うことについて話し続けていますが、すべてのCSRF攻撃はユーザーと同じ起源であり、ユーザーをだまして意図しないアクションを実行させるため、意味がありません。
トークンをすべてのURLにクエリ文字列として追加する以外の方法はありますか?非常に醜くて実用的ではないようで、ユーザーにとってブックマークが難しくなります。