web-dev-qa-db-ja.com

特に、CSRFに対するDrupalの#token保護をバイパスすることは、検索フォームに対して安全ですか?

私はそれを見る $form['#token']drupal_prepare_form() および drupal_validate_form() でクロスサイトリクエストフォージェリに対する保護手段として採用されています。

コアのsearch_box()とsearch_form()をはじめ、ビューに引数を入力することで同様に検索を実装するモジュールでゼロから構築されたフォームを含む、サイト検索フォームでのこの対策の必要性について疑問に思っています。

私はそれが(実際にはdrupal_prepare_form()で、そしておそらく私が思い出せない他の場所で)トークン保護を回避するための実行可能なケースであると言及したのを見ました。しかし、なぜデフォルトでコアしないのですか?

(注:私はその部分をすでに理解しているので、コードでそれを回避するための助けを求めていません。)

5
teatime

潜在的なCSRF問題を判断する際の最大の問題は、ユーザーがだまされてアクションを起こした場合に何らかの形で被害が発生するかどうかです。ユーザーを削除するか、ノードを非公開にするCSRFの脆弱性がある場合、それは問題になります。しかし、だまされて検索を実行することは、検索を実行するために必要なリソースの点で問題になる可能性があります(それほど多くありません)。コア検索がトークンをバイパスしない場合でも、GET url(search/node/keyword)としてアクセスできるため、前のフォームをバイパスしてだれかにそのURLを訪問させることができます。

それについて考えるもう1つの方法は、アクションが べき等 かどうかです。検索はべき等のアクションです(W3の定義では、ログレコードが作成される可能性がありますが、大したことではありません)。そのため、CSRF保護は必要ありません。

3
greggles

これは#tokenをバイパスしてはいけない理由をもたらすようです: CSRF:Drupalフォームのセキュリティホールを回避してください。

そして、あなたが提供した特定のインスタンスは#tokenをバイパスすることを保証していないようです。

0