WordPressで記事を書いていて、突然これが出た。
公開に失敗しました。
返答が正しい JSON レスポンスではありません。
よくあるエラーっぽいけど、
今回はちょっとハマったので、実務ログとして残しておく。
きっかけ
普通に記事を書いて、公開ボタン。
→ エラー
リロード。
→ エラー
別ブラウザ。
→ エラー
「ん? なんだこれ…」
状況
少し変だったのは、
他の記事は普通に更新できる
という点。
この特定の記事だけ、
保存・更新・公開、すべてNG。
環境は以下。
- WordPress:6.9.1
- テーマ:Cocoon Child
- レンタルサーバ:Xserver
- セキュリティ:CloudSecure WP Security
- Xserver WAF:有効
「WordPressの不調」というより、
セキュリティ系が何か止めてそう な匂いがした。
まず CloudSecure WP Security を丸ごと無効化
一番疑わしかったので、
まず CloudSecure WP Security を丸ごと無効化。
→ 普通に更新できた
「お前か……」
この時点で、
プラグイン側が原因 なのはほぼ確定。
設定を1個ずつ無効化して原因を絞り込む
とはいえ、
プラグイン自体を止めっぱなしは本末転倒。
ということで、
CloudSecure WP Security の設定を 1項目ずつOFF にして検証。
すると、
「設定ファイルアクセス防止」
この項目を 無効 にした瞬間、
問題なく投稿できるようになった。
今回の原因
CloudSecure WP Security の
設定ファイルアクセス防止
この機能が、
Gutenberg の JSON 通信をブロックしていた と思われる。
特に今回は、
- SSH
- 設定ファイル
- セキュリティ
- コマンド
- firewall
といった セキュリティ系ワード多めの記事。
WAF系ルールに引っかかった可能性はかなり高い。
じゃあセキュリティは大丈夫?
ここで悩む。
プラグイン側を緩めると、
今度は セキュリティが不安。
なので最終的に、
WordPress側
- CloudSecure WP Security
→ 設定ファイルアクセス防止:OFF
→ その他はON
Xserver側
- VPS管理パネル – セキュリティ – WAF設定
→ファイル不正アクセス:ON
という 役割分担構成 にした。
この構成にした理由
考え方としては、
「防御はサーバ側を主」
- サーバ側WAF → 外部攻撃を止める
- WordPress側 → 最低限の補助
という役割分担。
WordPress側でガチガチにやると、
管理画面の操作性が一気に悪くなる。
ひとり情シス的には、
セキュリティ強化 → 運用が破綻 → 結局設定戻す
このループが一番無駄なので、
無理しない現実ライン に落とした。
なぜ特定の記事だけエラーになった?
推測だけど、
- shell
- ssh
- firewall
- config
- sysctl
このあたりの コマンドやキーワード が、
設定ファイル系の防御ルールに引っかかった可能性が高い。
「毎回じゃない」のが、
一番厄介なパターン。
WAF × WordPress は割と地雷
WAFは正しく使えば強力だけど、
WordPressとの相性は正直あまり良くない。
特に、
- Gutenberg(ブロックエディタ)
- REST API
- JSON通信
- 自動保存
- 予約投稿
この辺は、
WAFと衝突しやすい。
なので、
JSON エラー
管理画面だけ不調
フロントは正常
このパターンが出たら、
WAF・セキュリティプラグインを疑う のはかなり有効。
今の正直な感想
ひとり情シスあるあるだけど、
セキュリティを詰めるほど、自分が詰む。
でも、
緩めすぎると、今度は不安で眠れない。
この ちょうどいいライン探し が、
情シスの仕事なんだな、と改めて思った。
まとめ
- 特定記事だけ JSON エラー → セキュリティ系プラグインが原因の可能性大
- CloudSecure WP Security の「設定ファイルアクセス防止」が地雷になりやすい
- 防御はサーバWAF中心、WP側は補助くらいが運用しやすい
同じ現象でハマっている人の、
1時間分くらいの時間短縮になれば嬉しい。


