WordPressで作成したホームページのWAF設定後にYouTube埋め込みページで403エラーが発生した事例と対処法を備忘録として置いておきます。
今回、WEBサイトのセキュリティ強化を目的として、お客様の通販サイトにてWAF(Web Application Firewall)の設定を行いました。
しかし、設定後に問題が発生。
商品ページ内にYouTubeを埋め込み表示しているページのみ、WordPressで「更新」ボタンを押すと403エラーが表示され、保存できなくなったのです。
調査結果
遮断履歴の閲覧をした所iframe要素が原因でクロスサイトスクリプティングとみなされた形跡がありました。
WordPressにWAFを適用した場合、
iframeを利用した外部サイトの埋め込み
(例:YouTube、Googleマップなど)
これらの表示や更新処理がブロックされるケースがあることがわかりました。
原因
原因は、iframeによる外部サイトの読み込みです。
iframeは、悪意のあるスクリプトを埋め込む「クロスサイトスクリプティング(XSS)」攻撃の入り口になる可能性があります。
そのため、WAFはセキュリティ対策としてiframeを含む通信を遮断することがあります。
つまり今回の挙動は、「セキュリティ対策としては正常な動作」ということになります。
実施した対策
今回の環境では、
・サーバー側でもWAF設定を有効化
・WordPress側でもWAF機能を有効化
という二重のセキュリティ構成になっていました。
そこで、
サーバー側のWAFはそのまま維持し、WordPress側WAFの「クロスサイトスクリプティング(XSS)対策」のみを解除しました。
これにより、セキュリティレベルを大きく下げることなくYouTube埋め込みページの更新も正常化というバランスを取ることができました。
まとめ
WAFは非常に重要なセキュリティ対策ですが、
・iframe要素
・外部埋め込みコンテンツ
・API連携
などを使用しているサイトでは、意図しないブロックが発生する可能性があります。
WAF設定後に403エラーが発生した場合は、どのページで起きているか、外部コンテンツを埋め込んでいないかなどを確認すると、原因特定がスムーズになります。
セキュリティと利便性のバランスを取りながら、適切な設定を行うことが重要です。
以上簡単ではありますが、頭を使った出来事でしたので共有しておきます。
同じ様な現象が起こり、解決できない場合は相談してくださいね。何か解決の糸口がつかめるかもしれません。