WordPressの保存が「閲覧できません (Forbidden access)」403で止まる。原因はサーバーのWAFだった

運営者

WordPressの保存を止めていたのは、WordPressではなく、使っていたレンタルサーバーのWAFでした。
WAFは、Webサイトへの攻撃らしい通信を見分けて止める門番のような仕組みです。
効いたのは、サーバーの管理画面でWAFを一時OFFにして保存し、すぐONに戻す手だけです。

最初に止まったのは2026年7月20日、計算ツールを埋め込んだ記事を公開しようとしたときでした。
<script>タグ(ページの中で動くプログラムの部品)が入った投稿です。
WordPressの通常の編集画面であるブロックエディタから保存しても同じだったと、記録にあります。

7月から10月まで、同じ止まり方が続いた

WordPressの更新は、多くを部下役のAIに任せていました。
AIはREST APIで保存します。REST APIは、外から記事を読み書きするためのWordPressの窓口です。

7月20日のあと、7月23日には、テーマ設定にある計測タグ欄の保存も弾かれました。

9月5日には、本文に広告のスクリプトが入った記事で同じことが起きます。
中身を変えずに保存し直すだけでも、REST APIが「正しいJSON(データをやりとりする決まった書式)ではない」という趣旨で拒否します。
保存の返事が読めない、という意味のエラーです。

9月13日は、カスタマイザーの追加CSS(サイトの見た目を書き足す設定欄)でした。
保存するたびに、画面に「閲覧できません (Forbidden access)」と出て止まります。

10月13日は、問題数の多い練習ツールの記事です。
本文404KBをRESTで保存すると、403とともに「Powered by SiteGuard Lite」と表示されました。
403は「アクセスを拒否した」という意味のエラー番号です。
この一行が、サーバー側のWAFだと分かる印でした。
サーバーの管理画面では「XSS対策」という項目です。XSSは、ページに悪いスクリプトを仕込む攻撃を指します。
正当な保存を、この対策が攻撃と見なしていました。いわゆる誤検知です。

どの文字列に反応したのかは、最後まで分からなかった

記録に残っている手がかりは3つあります。
追加CSSは、元のCSSにコメント1行を足しただけでも拒否されました。
空のCSSや、URLだけのCSSは通っています。
10月13日の記事は、同じ日の昼に保存した330KBの版なら通っていました。

しかも、毎回止まるわけでもありません。
7月22日の記録には、追加CSSの修正はWAFを切らなくても済んだとあります。
7月24日には、記事のリンクの置き換えと広告設定の保存が、WAFをONにしたまま通りました。
8月1日には、scriptタグを新しく入れた保存も通っています。

時間をおいて保存し直す手は、9月5日の広告入り記事で2回試して、2回とも拒否されました。
CSSの中身を整える手もだめでした。
%エンコードを全部消した32KB版も、同じように弾かれています。
%エンコードは、記号を「%」と英数字の組み合わせに置き換えた書き方のことです。

AIに任せていた作業で、引っかかる語句を突き止めようとしたこともあります。
これはAI側の安全判定に止められました。
止まって正解だったと思っています。
語句を探して書き換えるのは、WAFの「回避」に当たりうるからです。
サーバーの守りを、自分の都合ですり抜ける形になってしまいます。

WAFを切って、まとめて保存して、すぐ戻す

効いた手順はこれだけでした。

  1. サーバーの管理画面で、WAF(XSS対策)を一時的にOFFにする
  2. 止まっていた保存を、まとめて済ませる
  3. 終わったらすぐにWAFをONに戻す

OFFの間は、一般に守りが薄くなります。
だから、止まっていた保存はOFFにしたときにまとめて済ませるようにしていました。
10月13日の分は、翌日の記録に「ONに戻し済み」と残っています。
10月28日も、夜にWAFを一時OFFにして、待たせていた3本の記事をまとめて反映しました。

サーバーの操作は、毎回僕が自分でやっていました。
AIに任せず人が持つべき操作は、WAFのON/OFFのほかにもあります。
そういう操作を分けるために置いているのが、「AIに任せる・自分でやる」仕分け診断です。

部下役のAIの記録には、ツール入りの記事を流す前に1回試す手順を残しています。
試す場所は、捨てのブロック(あとで消す試し用の段落)です。
通らなければ、WAFをOFFにするときにまとめて保存します。
AIやスクリプトに更新を任せている人ほど、この壁に当たりやすいと思います。ここは推測です。

名前の似たSiteGuard WP Pluginは別物

SiteGuard WP Pluginは、WordPressに入れるセキュリティプラグインです。
公式ページでは、管理画面とログイン画面を守るためのものと紹介されています。
サーバー側で動くSiteGuard Liteとは別物です。

その公式ページには、WAF(SiteGuard Lite)の除外リストを作る機能も載っていました。
僕はまだ試していないので、効き目は分かりません。

参考

WordPress以外で作業が止まった件は、AIのエラーと対処に並べています。

記事URLをコピーしました