サポート » プラグイン » mw_wp_formのCSRF対策

  • 解決済 tsuka1122

    (@tsuka1122)


    いつもmw_wp_formプラグインを利用しております。
    普段は確認画面を経由して完了画面へ行くフォームを作成しておりますが、
    今回確認画面なしのフォームを作成を予定しております。
    その場合CSRFの対策は可能でしょうか?

    また、以下の事を試しました。
    1)Aのサイトにmw_wp_formで作成したフォームを設置。確認ボタンは設置せず、送信ボタンのみ設置
    2)Bのサイトにiframeタグを設置し、srcにAのサイトのお問い合わせフォームのURLを設定
    3)BのサイトでAのサイトのお問い合わせ送信。
    上記の結果完了画面へ画面遷移は行われませんでしたが、自動返信メールが届き、DBにお問い合わせ内容は格納されました。こちらは仕様でしょうか?

    お忙しいところ恐縮ですがよろしくお願いします。

    Aのサイトの情報
    ==========================
    Wordpress:5.8.2
    mw_wp_form:4.4.0
    テーマ:オリジナルテーマ
    PHP:7.4.25
    =========================

    • このトピックはtsuka1122が2年、 4ヶ月前に変更しました。
    • このトピックはtsuka1122が2年、 4ヶ月前に変更しました。
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    IPA では CSRF による脅威は、以下のように説明しています。

    – ログイン後の利用者のみが利用可能なサービスの悪用
    – ログイン後の利用者のみが編集可能な情報の改ざん、新規登録

    試された方法ではどこにもログインしておらず、どのような脅威があるのか分からないのですが、お教え願えますでしょうか。

    他のサイトを iframe で埋め込めるのは HTML の仕様としてそうなっています。
    iframe で埋め込まれたくないのであれば、Web サーバーにそのように設定されてはどうでしょうか。
    参考)https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/X-Frame-Options
    詳細はどこか Web サーバーの設定について質問可能なところにお聞きになってください。

    トピック投稿者 tsuka1122

    (@tsuka1122)

    @munyagu
    ご連絡ありがとうございます。

    >試された方法ではどこにもログインしておらず、どのような脅威があるのか分からないのですが、お教え願えますでしょうか。
    CSRFについて理解が足りておらず申し訳ございません。
    mw_wp_formで作成したフォームはどのユーザーでも利用可能なお問い合わせフォームであり、ログインフォームではありません。
    mw_wp_formで作成したお問い合わせフォームは、確認画面を経由したフォームであればサーバーやWordpress側で何か設定をしなくても他のサイトからの問い合わせをブロック出来ましたが、確認画面なしのフォームでは他のサイトからのお問い合わせをブロックできなかったので気になった次第です。

    ただのお問い合わせフォームでも他のサイトのIframeに埋め込まれたサイトからのお問い合わせも受け付けること自体が脅威=CSRF攻撃なのかと思っておりました。申し訳ございません。

    また、下記のトピックにてTakashi Kitajima様が「MW WP FormはCSRF対策で外部からの送信を受け付けないように正しいトークンが送信されないと受け付けないような仕組みになっています。そのため外部からPOSTで送るというのはできません。」と発言をされておりましたので、外部=他のサイトのifrmaeからのお問い合わせも受け付け不可能だと思っておりました。
    https://ja.wordpress.org/support/topic/mw-wp-form-%e3%81%abpost%e3%81%a7%e5%80%a4%e3%82%92%e9%80%81%e3%82%8a%e3%81%9f%e3%81%84/

    色々勉強不足で申し訳ございません。
    よってmunyagu様が仰るように「iframe で埋め込まれたくないのであれば、Web サーバーにそのように設定」という方法を試してみようと思います。

    • この返信は2年、 4ヶ月前にtsuka1122が編集しました。
    • この返信は2年、 4ヶ月前にtsuka1122が編集しました。
    • この返信は2年、 4ヶ月前にtsuka1122が編集しました。
    • この返信は2年、 4ヶ月前にtsuka1122が編集しました。

    @tsuka1122 さん

    こんにちは。
    CSRF対策というのは、Webアプリケーションにおいて正しいリクエストであるかどうかをチェックする事であり、MW WP Formでもnonceチェックを行っていますので、CSRF対策は施されております。

    今回の例でば、Bのサイトにiframeとした埋め込んだAのサイトのフォームを操作しているとの事ですが、あくまでAのサイト側から見れば自サイト内で操作が直接行われている事と同じであり、リクエストも正しいものと判断されていると思われます。

    おそらく懸念されているのは、CSRFではなくクリックジャッキングであり、「そもそも他サイトにコンテンツを埋め込まれたくない」という事ではないでしょうか。
    それであれば、@munyagu さんがおっしゃられているように、Aサイト側でX-Frame-Optionsを適切に設定すれば対策出来ると思います。

    トピック投稿者 tsuka1122

    (@tsuka1122)

    @tsuka1122
    ご回答いただきありがとうございます!
    また、丁寧な解説ありがとうございます!大変参考になりました!
    X-Frame-Optionsを適切に設定できるようにさせていただきます!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「mw_wp_formのCSRF対策」には新たに返信することはできません。