PHPは他のプログラミング言語と比較して、学習難易度が低いのが特徴です。そのためWebアプリケーションの開発言語として広く利用されています。PHPを使用して構築されたシステムのセキュリティ対策として、WAF(Webアプリケーションファイアウォール)の導入を検討されるケースも少なくないと思います。本記事では、PHPで構築されたシステムへのサイバー攻撃を、WAFで防御する場合に注意すべき点に注目して解説していきます。
WAF(web application firewall)を導入するとPHPが動かないことがある?
WAFの動作によって、一般的なPHPの動作が影響を受けるという問題が起きているようです。PHPで構築されたシステムがレンタルサーバー上などで稼働している場合、レンタルサーバー側のアップデートによってWAFが動作してWebアプリケーションが正常に動作しなくなった、などのケースが確認されています。
参考例①:PHPやCGIでプログラムの記述変更をしたところ403errorが表示されます
※引用元:参考例① GMOペパボ社「LOLIPOP」
それぞれの参考例では、WAF機能を無効にして403エラー(Webサイト閲覧禁止)を回避する方法が書かれています。このように、WAFが意図しないタイミングで導入されたためにPHPの動作に影響が出る場合については注意が必要です。
なぜWAFはPHPをブロックするのか
PHPの大きな特徴として、HTML内にPHPコードを埋め込むと動的なWebページを生成できます。よって埋め込みコード部分を悪用したサイバー攻撃を仕掛けることが可能となります。セキュリティの強化だけを考えれば、コード埋め込みをすべてブロックすればコード埋め込みからのサイバー攻撃はすべて無効化できます。前述したような初期設定でPHPコード埋め込みをブロックしているWAFも存在するようです。
PHPコード埋め込みの例
| <html> <head> <title>test</title> </head> <body> <?php echo ‘<p>php test</p>’; ?> </body> </html> |
上記のようなテキストを拡張子phpで保存(例:test.php)し、サーバーに配置してアクセスするとphpタグで囲まれた部分のPHPコードが実行されます。
例えばCMS(Contents Management System、コンテンツ管理システム)として広く利用されているWordPressでは、テンプレートがPHPで構築されています。設定画面でテンプレートを変更して保存した場合に、PHPコード埋め込みが保存内容に含まれていると埋め込みコードがリクエストとしてWordPressサーバーに送信されます。このとき、WordPressサーバーがWAFで防御されていると「保存処理がWAFでブロックされて設定変更できない」、といったケースがあります。
プログラミングとPHPの埋め込みコードの知識があれば、動的なWebページを比較的容易に作成できる場合があります。しかしセキュリティの観点からはサイバー攻撃の標的になりうる(=WAFのブロック対象となりうる)という点を理解しておきましょう。
PHPでWAFを有効活用する方法
HTMLにPHPコードが埋め込まれているWebアプリケーションやWordPressのようなCMSテンプレートに対してWAFを活用するケースでご説明します。リクエスト時にPHPコードが含まれた状態で送信されるケースが多いため、防御ルールを細かく設定できるWAFの導入を検討するとよいでしょう。
PHPコード埋め込みの防御ルールだけ、通信許可に変更可能なWAFを導入するのです。そうすればシステムの改修を極力抑えながら、セキュリティ対策を適用できます。埋め込み可能なコードと不可能なコードのルールをカスタマイズ設定できるWAFであれば、さらに柔軟なセキュリティ対策を実現できます。
一方で、サーバーサイドのロジックにのみPHPが使用されているなど、埋め込みコードを使用しない場合があります。コード埋め込みを行う場合と比較して、WAFがWebアプリケーションへのアクセスをブロックするケースは少なくなると思われます。防御ルールを大幅にカスタマイズしなくてもWAFを導入できる場合があるので、レンタルサーバーなどのWAFが利用可能な状況であれば初期設定に時間を使うことなく、WAFのセキュリティを適用できる可能性があります。このような方法で、 PHPシステムでWAFを有効活用してみましょう。
PHPの脆弱性はWAFで防げる?
PHPに脆弱性が発見された場合の基本的な対策は、脆弱性が修正されたバージョンへ速やかにアップデートすることです。
一方、システムへの影響確認や改修作業などの理由から、すぐにアップデートできない場合もあります。そのような場合、WAFの防御ルールや設定によっては、脆弱性を悪用した攻撃のリスクを一時的に軽減できる可能性があります。
ただし、WAFですべての攻撃を防げるわけではありません。防御効果は脆弱性の種類やWAFの対応状況、システム構成などによって異なり、正常な通信を誤って遮断する可能性もあります。
例えば、2026年10月に公表されたPHPの脆弱性「PHP2Shell」では、WAFによる一部の緩和策が公開されていますが、WAFだけで攻撃を防ぐことは困難です。
そのため、WAFをPHPのアップデートの代わりと考えるのではなく、必要に応じてアクセス制限やサーバーの監視などの対策も組み合わせながら、修正版への更新を優先することが重要です。
まとめ
PHPで構築されたWebサイトやWebアプリケーションにWAFを導入する際は、正常な通信がサイバー攻撃と誤検知され、システムの動作に影響が出る場合があります。そのため、防御ルールを適切に調整し、正常な動作を維持しながらセキュリティ対策を行うことが重要です。
また、PHPの脆弱性への対策としても、WAFの活用は有効な選択肢の一つです。PHPのバージョンアップにはシステムの改修や動作確認が必要となり、すぐに対応できないケースもあります。そのような場合、WAFを導入することで、一部の攻撃によるリスクを軽減できる可能性があります。
ただし、WAFですべての攻撃を防げるわけではなく、PHP自体の脆弱性が解消されるものでもありません。WAFを補完的な対策として活用しながら、PHPのアップデートなどの根本的な対策を進めることが大切です。
バルテスが提供するクラウド型WAF「PrimeWAF」は、Webサイトへの不正な通信を検知・遮断するサービスです。無料トライアルでは、通信を遮断せずにログを記録する機能を利用し、システムへの影響を確認しながら防御ルールを調整できます。
Webサイトのセキュリティ対策をご検討の方は、ぜひPrimeWAFをご覧ください。

