1

CSRFPHP で再び攻撃を防御する最善の方法は何ですか。

フォーム トークンを使用することが推奨されているため、基本的にはランダムな値を生成し、隠しフィールドに格納します。次に、このランダム値もユーザー セッションに保存します。

最後に、フォーム アクションで、セッションとフォーム トークンが一致することを確認します。

if($_SESSION['token'] !== $_POST['token']) {
   die("bad... spanking...");
}

これには、アプリケーションで多くのコード変更 (多くのフォームとアクション) が必要になるため、より良い/より簡単な方法はありますか?

4

1 に答える 1

2

いいえ。CSRF から保護するには、ユーザーが実際にフォームを送信したと信じる理由がある場合に、リクエストに自動的に追加される資格情報 (Cookie など) のみを信頼するようにする必要があります。これを行う唯一の方法は、サーバーが処理を承認するために使用するある種の秘密をフォームに持たせることです。

フレームワークまたはライブラリを使用してフォームを構成する場合、乱数の生成、Cookie またはセッション プロパティの設定、非表示の入力のフォームへの追加が役立つ場合がありますが、これら 3 つの手順を実行する必要があります。

于 2012-08-25T00:24:12.313 に答える