WordPressやホームページでコンテンツの更新を行ったにもかかわらず、いくらブラウザの更新ボタンを押しても、キャッシュクリアをしても変更内容が反映されないことに困ってませんか?
その原因の一つとして、サーバーのWebアプリケーションファイアウォール(WAF)が作業をブロックしている可能性があります。
本記事では、WAFが更新内容の保存を妨げた実際の例を挙げて解決策について詳しく解説します。
wp_head、wp_footerにコードが入力できない (ConoHa WING)
WordPressで特定の記事だけにCSSやJavaScriptを適用したい時、wp_head, wp_footerにコードを入力できる機能があるテーマがあります。(AffingerやCocoonなど)
カスタムフィールドで独自に実装することもできますが、あらかじめテーマで実装されているとありがたいですね。
このhead / footerに入力することで、特定の記事だけにCSSやJavaScriptを適用することができるのでとても便利です。
しかし、何度入力しても、更新すると保存されていないという現象が起こりました。
原因:WAFでブロックされていた
これは、ConoHa WINGのWAFによってブロックされていたのが原因でした。
ConoHa WINGではWAFのログが確認できます。
コントロールパネル>サイト管理>サイトセキュリティ>WAF
確認してみると攻撃元IPアドレスに自分のIPアドレスが。WAFでクロスサイトスクリプティングと判断されてしまっています。
対処法1:WAFでログを除外する
まずは、WAFの除外設定をしてみます。
当該ログの左にある「除外」ボタンをクリックします。自分以外のログを除外しないように気をつけます。
対象のログが除外対象になります。
この状態で、再度wp_headに出力するコードを入力してみて、保存されればOKです。
でも今回の場合、これだけでは入力した内容が保存されませんでした。
対処法2: WAFを一時オフにする
ログの除外では解決しなかったので、一時的にWAF自体をオフにしました。
オフの状態で、wp_headに出力するコードを再度入力し、保存。
今回はちゃんと保存されました。
編集が終わったら、WAFはまた再度ONにしておきましょう。
WordPressプラグイン Rinkerの設定が保存できない(ConoHa WING)
楽天やAmazonの商品リンクが簡単に作成できるWordPressプラグインRinker。
Rinkerをインストールして最初にやるのは、AmazonのトラッキングIDやアフィリエイトASPのIDなどを入力設定します。
ここで設定を保存しようとエラーになる場合があります。
閲覧できません(Forbidden access)
これもWAFでブロックされていたのが原因でした。
恐らくLink Switch用のJavaScriptタグがブロックの理由じゃないかと。
対処法:WAFのログから除外する
これも前述の方法と同様、WAFのログを確認して自分の操作したログがあれば「除外」にします。
今回は、これだけで解決しました。
静的HTMLからリンクしているPDFを開くと501エラーになる(Xserver)
この問題は結構解決するのに手間取りました。
エックスサーバー で運用中のあるサイトで、普通の静的HTMLから普通のPDFファイル(内容は料金表)をリンクさせていたのですが、ファイルを開こうとすると501エラーになってしまいます。
エックスサーバーで501エラーになるのは、WAFによるものが多いのではと思います。
対処法:WAFの機能を一つ一つオフにして確認する
エックスサーバーのWAFでは6つの設定項目が存在します。
- XSS対策
- SQL対策
- ファイル対策
- メール対策
- コマンド対策
- PHP対策
エックスサーバーのWAFは、ConoHaのようにログが確認できたり、特定のファイルを除外したりする機能はありません。
上記の設定項目でどれが原因なのかを特定するには、一つずつOFFにして改善するかどうかを確認していくしかないようです。
原因はリンク先のディレクトリ名だった
結論から言うと、今回のエラーになる原因は「etc」と言うディレクトリ名がWAFの「ファイル対策」に引っかかっていたようでした。
詳しくは以下の記事でまとめています。>>> 501エラー Not Implementedが表示された時はエックスサーバーのWAFが原因かも
この件では、せっかくの有用なセキュリティ機能をできるだけ有効にしておきたかったので、etcというディレクトリ名を他の名前に変更してリンクを修正し解決しました。
XserverのWAFでトラブルの原因を特定するのは難しい印象でした。
403エラー(Forbidden access)や501エラーが表示されれば、WAFが原因じゃ?とすぐに気がつくことができるんですが、エラーも何も表示されない場合はWAFが原因かもと気づくのに時間がかかってしまいます。
何かトラブルが会ったときはWAFが原因の場合もあるということを頭の片隅に入れておくのが大事ですね。
ConoHa WING、Xserverともに、WAFをはじめとしてセキュリティが装備されている高機能サーバーです。