CSRFを防ぐ方法の1つは、フォームでトークンを使用することです。多くの記事を読んだ後、私はステップが通常これらの線に沿っていることを理解しました:
- 暗号化されたトークン値を生成し、それをセッションに保存し、フォームの非表示フィールドにトークン値を設定します。
- フォーム処理ページで、非表示フィールドのトークン値とセッション値を次のように比較します。$ _POST ['token'] == $ _SESSION ['token']
私の質問は、なぜトークン値を暗号化する必要があるのですか?私がGETメソッドを使用していて、攻撃者が1から1000までの単純な整数値を使用することを知っていると仮定します。攻撃者が画像を使用してリクエストを偽造する場合、攻撃者は1000枚の画像を送信する必要があります。要求をブルートフォースするために..正しいですか?またはこれを行う他の方法はありますか?
また、POSTメソッドだけを使用するだけではCSRFリクエストを防ぐのに十分ではないことを読みました。したがって、私の2番目の質問は、これが当てはまる場合、POSTメソッドを使用している場合、攻撃者はどのようにして偽造されたリクエストを正常に作成できるかということです。