Blog

WordPressのJSONレスポンスエラー対策【WAFチューニング編】

2024年1月31日

WordPressで記事を保存した時などに以下のような「更新を失敗しました。返答が正しいJSONレスポンスではありません」といったエラーが出て記事を保存できないケースがあります。

この記事の内容

エラー内容

サーバによっては403 Forbiddenエラーだったり、記事保存時の上記のようなエラーだったりします。原因はWAFの誤認知がほとんどで以下の条件下で発生する事を確認できました。

発生する状況

色々なケースがありますが、通常の記事では発生しない事も多いようです。おそらくデフォルトの「投稿」はサーバ側がWAFのチューニングでホワイトリストに入れている事が多いのかもしれません。

原因となるWAFの誤認知の確認方法

発生したエラーが何かを調べるためにはサーバのWAFのログを確認してどのシグネチャでブロックされているのかを確認する必要があります。主に以下のものが一般的です。

sqlinj-*のように1桁から2桁くらいの数字でシグネチャが出てきますが、その数字の内容がどういった内容なのかというのはブラックボックスになっています。※公開するとそれを狙われる可能性があるため。

注意点としてはシグネチャ以外にも時間、IP、URLといった情報もあるので疑わしいものと誤認知であるものと見極める必要があります

例えば「夜中に見覚えのないIPからAPIのファイルにアクセスがあるもの」などは絶対許可を入れないようにしましょう

WAFチューニング方法

SITEGUARDのプラグインのWAFチューニングサポートから設定する方法

ファイル名やシグネチャを指定※複数可能。オン、オフ切り替えも出来て簡単です。

「新しいルールを追加」でシグネチャを登録。ONやOFFも可能。
シグネチャは複数登録可能。ファイル名を指定することもできます。

.htaccess に書き込む方法

IPなどプラグインではできない指定も可能なのでこちらは上級者向けとなります。

以下は、例として「signature1」と「signature2」の2つのシグネチャを除外した場合の書式です。

<IfModule siteguard_module>
SiteGuard_User_ExcludeSig sql-1,sql-2 
</IfModule>

クライアントワークの場合は常にセキュアな状態を保ちたいというニーズもあるかと思います。その場合は手間にはなりますが、SITEGUARDのプラグインから設定を行い、記事入力時のみオフにするという方法も有効です。