【CPI】ContactForm7の設定変更でエラー。原因はWAF
当サイトのリンクには広告が含まれています。
Contact Form7の設定を変更後、何度[保存]ボタンを押してもエラーで保存できないトラブルに見舞われました。
サーバー:CPI シェアードプラン ACE01
Powered by SiteGuard とあるので多分WAFだなとログを確認すると、案の定「BLOCK」検出シグネチャ「sqlinj-9」の記述が。ググっても公式のシグネチャ解説が出てこないのですが、「sqlinj」ってSQLインジェクションの略と思われます。
つまりContact Form7に問題があるわけではなく、メールフォームの内容書き換え作業がインジェクション攻撃に誤認されている模様です。
対策その1:WAFを一時的に無効にする
メールフォームの変更作業の間だけ、一時的にWAFを無効化します。CPIのコントロールパネルにログイン後、下記の項目からWAFを無効にします。
[公開サイト用設定] > [制作ツール] > [WAF] > [公開サイト WAF の設定状況] > [無効にする]
尚、WAFが無効になるまで数分かかります。
CPIサーバーの場合、状況の確認はブラウザから【ドメイン名】/WAF-TEST-SIGNATURE にアクセスすると確認出来ます。WAFが起動している間は403でブロックされ、無効になるとページが存在しない404ステータスが返ってきます。
参照:通信を遮断した際の表示画面 | WAF | Online Help for ControlPanel
無効化を確認後、作業に取り掛かります。作業が終わったら、忘れずにWAFを再度有効にします。
対策その2:.htaccessで除外設定をする
上記案だと一時的とはいえWAFが無効な状態になってしまいます。
WAFが有効なまま作業をしたい場合、.htaccessで除外ルールを設定する事が出来ます。
参照:特定シグネチャの除外方法|シェアードプラン SV-Basic|操作マニュアル|CPIサポート
※マニュアルはSV-Basicの解説ですが、ACE01サーバーでも動作を確認しました。※2023年9月時点
除外設定は検出シグネチャ名で直接指定する事も可能ですが、それだとその検出ルール自体がオフになるので、該当する攻撃に無防備になってしまいます。
そこで自分のグローバルIPアドレスをホワイトリストとして登録します。
<IfModule siteguard_module>
SiteGuard_User_ExcludeSig ip(IPアドレス)
</IfModule>
IPアドレスの部分を自分のグローバルIPに置き換えてください。
これでブロックから自分が除外されるので作業が出来るようになります。
この設定も作業が完了したら忘れずに削除します。
放置していると、固定IPならともかく動的IPは再割り当てされるので、いずれ自分がブロックされ無関係の第三者が許可される可能性があります。注意してください。