1

ホームページのすべてのフォームが異なる認証トークンを表示しています。CSRF メタ タグは、さらに別の認証トークンを示しています。

それらはすべて同じであるべきではありませんか?

新しい Rails 4 プロジェクトを作成したところ、すべてのトークンが一致しました。

4

1 に答える 1

0

これはフラグメントキャッシングが原因だと思います。フォームをキャッシュしている場合、トークンは残りのコンテンツと共にキャッシュされます。これに対処するための 2 つの戦略は次のとおりです。

  1. Javascript を使用して、ヘッダー内のものから隠しフィールド認証トークンを設定します。これには、JavaScript が必要であるという欠点があります。
  2. 取得したフラグメントをレンダリングする前に検索と置換を行う新しいキャッシュ メソッドを作成し、認証トークンを現在のトークンに置き換えます。これには、より複雑になり、ページのレンダリング時間にオーバーヘッドが追加されるという欠点があります。
于 2014-02-27T21:24:56.493 に答える