WordPressで記事を更新しようとすると403エラーが出る。
記事の更新は問題ないが、メニューを更新しようとすると403エラーが出る。
などなど、微妙な違いはあるものの、Wordpressで何かしら更新をしようとすると403エラーが出るという症状に悩まされている人は多いようですね。
大抵はサーバーのWAFというセキュリティーシステムが問題。
対処法としてWAFを無効にしてしまえ、という乱暴なものが目立ちます。
せっかくのセキュリティー機能なのに…
次に多い解決策の提案としては、SiteGuardというプラグインを利用して、WAFの除外ルールを記述するというもの。
でもこれ、そもそもこのプラグインを入れていないとダメですし、中にはSiteGuardを入れたらWAF絡みのエラーが出る様になったという話も…
本末転倒。。。
今回、あるサイトのメニューを更新しようとしたところ、久々に403エラーに遭遇しました。
昔、.htaccessに追記して解決したという記憶だけはあったのですが、具体的に何を記述するべきか覚えていなかったので、忘備録として残しておきます。
まずは、WAFの検知ログからシグネチャというものを探り当てます。
サーバーによってログを閲覧する方法は異なると思いますが、弊社でよく利用しており、ユーザーも多いであろうロリポップの場合は以下の通り。
セキュリティー→WAF設定
ログ参照
赤丸で囲った文字列をメモしておきます。
その上で、.htaccessに以下の様に記述。
<IfModule mod_siteguard.c>
SiteGuard_User_ExcludeSig xss-try-11
</IfModule>
これで解決します。
この方法だと同じルールだとWAFが判断した物全てが容認されてしまうので、セキュリティーが低下する可能性が無いとも言い切れません。
それが心配な場合は、IPアドレスで除外設定することも出来ます。
その場合は以下の通り。
<IfModule mod_siteguard.c>
SiteGuard_User_ExcludeSig ip(XXX.XXX.XX.X)
</IfModule>
XはIPアドレスの数字です。
もちろん、IPアドレスが変わってしまえばまた設定しなおしになってしまうのでIPアドレスを固定にしていない場合はなかなか面倒かもしれません。。。
ひとまず、WAFそのものを無効にするという解決策はやめましょう(笑)
ただ、セキュリティーに関しては自分も素人なので、この方法で何か不具合やセキュリティー上の問題が生じても、責任は取れませんので、よろしくお願いします。。。