2

RailsフォームのAuthenticity Tokenが、送信ごとに一意に生成されるのではなく、セッション全体で持続するのはなぜだろうか。

私はweb2pyから来ています。ここでは、フォームは と呼ばれる一意のワンタイム トークンで生成され_formkeyます。フォームキーは、ダブルクリックや戻るボタンのキャッシュなどによる重複送信を自動的に防ぎます。

Rails では、二重送信の問題に自分で対処する必要があるようです ( https://stackoverflow.com/a/4683161/165673を参照)。ワンタイム認証トークンは、この問題を解決し、より安全になると思いますか?

4

1 に答える 1

3

セッション全体に対して 1 つのトークンの方が実装が簡単です。フォームを含む 2 つのタブが開いている場合を考えてみましょう。

セッションの 1 つのトークンは、ワンタイム トークン ソリューションと同じくらい安全です。少なくとも CSRF 攻撃に対する保護として。

Rails では、二重提出の問題に自分で対処する必要があるようです。

そのためのすぐに使えるソリューションがあります。disable_withオプションについて読んでください。もちろん、データを変更するすべてのリクエストは、GET ではなく HTTP POST 経由で送信する必要があります。

于 2013-09-06T17:14:17.860 に答える