WordPressで記事を執筆中にいきなり投稿画面が暗転して「Background Request Blocked」というWordfence Securityの警告が何度も繰り返し表示される。
ホワイトリストに登録するか聞いてくるが、とりあえずよくわからないので[Dismiss](ホワイトリストに登録しない)というボタンをクリックしてみるが、しばらくすると再度画面が暗転してまた警告画面が表示され、今度は「下書きとして保存」のボタンが無効化されて執筆中の記事の保存すら出来なくなっている。
この状況はマズイので調査して対策する。
警告内容の調査
警告文の内容
表示される警告の内容は以下の通りです。
Wordfence Firewall blocked a background request to WordPress for the URL /wp-admin/admin-ajax.php. If this occurred as a result of an intentional action, you may consider whitelisting the request to allow it in the future.
[Whitelist this action] [Dismiss]
バックグラウンド要求がブロックされました。
Wordfence FirewallはURL /wp-admin/admin-ajax.phpに対するWordPressへのバックグラウンド要求をブロックしました。意図的な行動の結果としてこれが発生した場合、あなたは将来それを許可する要求をホワイトリストに入れることを検討するかもしれません。
[ホワイトリストに登録する] [登録するしない]
この警告文をもとに、WordfenceのヘルプやQ&A等を見て調査してみました。
仕様と対策方法がわかったので解説します。
この警告の仕様
この警告表示とブロックは、admin-ajax.phpスクリプトへのバックグラウンドリクエストを悪用した特定の種類の攻撃を防ぐために発生します。
しかし一部のプラグインやテーマは、正当なバックグラウンド処理を実行する際にadmin-ajax.phpスクリプトにアクセスする場合があり、その際も警告表示が発生してブロックされる可能性があるそうです。
対策方法
Wordfenceのファイヤーウォールが正当なアクセスを攻撃だと誤検知してしまうこのような現象を防止するために、Wordfenceには正当なアクセスか攻撃かを学習する「Learning Mode(学習モード)」という機能があり、この学習機能を有効化することにより誤検知を防ぐことができます。
というわけでLearning Mode(学習モード)を有効化して対策しましょう。
Learning Mode(学習モード)の有効化手順
はじめに、既に「下書きとして保存」のボタンが無効化されて執筆中の記事の保存が出来なくなっている場合は、とりあえず投稿画面を「テキスト」タブに変更し、全ての内容をコピーしてテキストファイルなどに張り付けて保存しておきましょう。
では対策を始めていきます。
WordPressのメニューから「Wordfence」→「Firewall」をクリックします。
Firewallタブの「Manage Firewall」をクリックします。
Firewall Options画面が開きますので、「Web Application Firewall Status」を「Learning Mode」に変更します。
「Automatically enable on」にチェックを入れます。すると一週間後の日付が自動的に入力されます。
※これはLearning Modeで7日間だけ学習を行い、その後は通常のファイヤーウォールが有効になるという設定です。
最後に右上の「Save changes」をクリックして設定を保存します。
これで「Learning Mode(学習モード)」の有効化が完了しました。
これより7日間の学習を行い、その後は学習した内容をもとにファイヤーウォール機能のブロックが発動します。
投稿画面に戻って先ほどコピーした投稿内容を「テキスト」タブ内にペーストして記事を復元して投稿執筆作業を再開しましょう。
以上で解決です。