@isanino18

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【WordPress】プラグインのフォームからのメール送受信がWAFを無効にしないと出来ない

解決したいこと

WordPressでカレンダー予約が出来るプラグイン「Booking package(有料版)」を導入して宿泊予約サイトを制作中です。レンタルサーバーはロリポップ(ハイスピードプラン)を利用中。

現在、カレンダーで日にちと宿泊人数を選べば合計金額が算出され、予約ボタンを押したら、申込者と管理者のところにメールが来るように設定しています。
テストで予約ボタンを押すと送受信がエラー(下部に記載)が出てしまいます。

発生している問題・エラー

During the communication (AJAX) between this browser and the server, the server returned an HTTP status code 403. To resolve this issue, please contact the server administrator.
で始まるエラー文

image.png

該当するソースコード

ソースコードを入力


### 自分で試したこと
対応としてロリポップサーバーのWAFを無効にして、セキュリティプラグイン「Site Gurde」を導入。それでもうまくいかず、今度はGmailなどのアドレスに対応するSMTPのプラグイン「WP Mail SMTP Lite」を入れて設定したところテストメールの送受信が可能になりました。

ですが、WAFを無効にするのはどうしても怖いので、何か方法が無いかとロリポップさんに相談したところ、下記の回答がきました。
---
WAFについて、検知しないようにするためにはWAFを無効かして頂くほかに方法はございません。
.htaccessを使用した特定の除外操作のような設定にも対応しておりません。
そのため、WAF自体を無効化していただくか、その他のWAF検知されないプラグインの導入をご検討頂きますようお願い致します。
お客様のご希望に添うことができず申し訳ございません。
---
希望は「WAFを有効化した上でWordPressのプラグインでのメール送受信がうまくいってほしい」です。
解決方法をご存じでしたらどなたかご教示ください。
0 likes

1Answer

エラーメッセージに含まれる 下記のページの方法は試されましたでしょうか?
WAFを一度無効化した上で 特定のURLに対してWAFの無効化を行ってから再度有効化するとあります。

解決方法
以下の手順で「WAF設定」を無効にしていただき、ご連絡いただいた操作が完了するかお試しください。

  1. ユーザー専用ページへログイン
  2. 『セキュリティ → WAF設定』にアクセス
  3. エラーが表示されたURLのWAF設定の「無効にする」ボタンをクリック
  4. 設定が反映するまで10分ほど時間をおく
  5. 同じ操作が完了するか再度試す
  6. 編集完了後にセキュリティのため設定を有効に戻してください
1Like

Comments

  1. @isanino18

    Questioner

    ありがとうございます。
    ご案内いただいた方法は試しているのですが、結局「有効」に戻すとエラーになってしまいます。
    プラグイン「Booking package」にお問合せして、先ほど下記の通り回答あり。
    プラグインの設定内で「公開ページでのAJAX通信のURLを選択」と「公開ページでのAJAX通信でNonceの値の検証で使う関数を選択」の値を変更してプラグインの動作をテストしてください。
    上記の操作でも問題が解決しない場合は、WordPressを利用しているサーバーでは、WAFを無効にする以外に動作しないと思われます。
    とご回答いただきました。
    WordPress初心者仲間で作業しているので、明日あらためて確認する予定です。この方法でうまくいくといいのですが。
    うまくいかなかったら、また皆さまに頼らせていただくかもですし、うまくいったら、こちらで報告したいと思います。

  2. @isanino18

    Questioner

    皆さまこんにちは。昨日はご回答いただきありがとうございます。
    今日、お試しアカウントのサイトでいろいろ検証してみました。
    結果としては失敗でした。(添付画像参照)

    image.png

    ここまでやってダメということは、レンタルサーバーのWAFを無効にする以外方法がないのかもしれません。
    またほかに何か方法があるようなら試してみたいと思います。

    ちなみに「Booking package」の設定について、チャットGPT先生に以下の質問もしてみました。
    Q)WordPressのプラグイン「booking package」の設定で「公開ページでのAJAX通信のURLを選択」というのがあります。どういう意味ですか? また、どういうURLを選択したらいいでしょうか?

    「公開ページでのAJAX通信のURLを選択」という設定は、WordPressのプラグイン「booking package」が公開ページ上で動的なデータのやり取りを行うためのAJAX通信を設定する際に使用するURLを指定するオプションです。AJAXは非同期JavaScriptとXMLの略で、ページの一部分だけを更新するためにサーバーと通信する技術です。
    通常、WordPressではadmin-ajax.phpを使用してAJAXリクエストを処理しますが、セキュリティプラグインによってはこのファイルへのアクセスがブロックされることがあります。そのため、プラグインの設定で別のURLを指定することで、この問題を回避することができます。
    選択すべきURLは、プラグインが正しく動作するために必要なエンドポイントを指し、通常はプラグインのドキュメントやサポートフォーラムで提供される情報に基づいています。例えば、プラグインのフォルダ内にある特定のPHPファイル(例: ajax.php)のURLを指定することがあります1。
    もし具体的なURLがわからない場合は、プラグインの開発者に問い合わせるか、プラグインのサポートフォーラムで情報を探すことをお勧めします。また、プラグインの設定画面やドキュメントに記載されている指示に従って設定を行ってください。


    Q)WordPressのプラグイン「booking package」の設定で「公開ページでのAJAX通信でNonceの値の検証で使う関数を選択」というのがあります。どういう意味ですか? また、check_ajax_referer() と はwp_verify_nonce() のどちらを選んだらいいのでしょうか? その選択肢の意味も教えてください。

    WordPressのプラグイン「booking package」における「公開ページでのAJAX通信でNonceの値の検証で使う関数を選択」という設定は、公開ページ上で行われるAJAX通信において、セキュリティのためにNonce(ワンタイムトークン)の値を検証する関数を選択するオプションです。Nonceは、CSRF(クロスサイトリクエストフォージェリ)などの攻撃から保護するために使用される一時的なトークンです。
    選択肢のcheck_ajax_referer()は、WordPressのadmin-ajax.phpファイルで使用されるAJAXリクエストのNonceを検証するために特別に設計された関数です。一方、wp_verify_nonce()はより汎用的なNonce検証関数で、Nonceが必要な場所であればどこでも使用できます。
    check_ajax_referer()とwp_verify_nonce()のどちらを選ぶかは、AJAX通信を管理者コンテキスト内で処理しているかどうかによります。admin-ajax.phpリクエストを特に扱っている場合は、check_ajax_referer()が適切かもしれません。それ以外の一般的なNonce検証の場合は、wp_verify_nonce()を使用できます。
    つまり、WordPressサイト内でAJAX呼び出しを実装する場所と方法に基づいて、これら2つの関数の間で選択することを意味します。プラグインが公開ページでAJAX通信を行う際に、どのようなコンテキストでNonceの検証が必要かを考慮して選択してください。もし不明な点があれば、プラグインのドキュメントを参照するか、開発者に直接問い合わせることをお勧めします。

Your answer might help someone💌