PHPの脆弱性とは?発生する原因と対策、改修発注で確かめること

【結論】PHPの脆弱性とは、PHPで作ったWebサイトやシステムに見つかる、セキュリティ上の欠陥です。
- IPA(情報処理推進機構)は、ウェブアプリケーションで起こりやすい脆弱性を11種類に分けて資料にまとめています。
- 対策には、原因そのものをなくす「根本的解決」と、被害を減らす「保険的対策」の2つの考え方があります。
- サポートが終了したPHPのバージョンを使い続けると、見つかった脆弱性の修正が届かなくなります。
この記事では、PHPで作ったサイトやシステムの管理を担当する方に向けて、脆弱性の種類と対策の考え方、改修を外部に発注するときに確かめる点をまとめます。
PHPの脆弱性とは
PHPの脆弱性とは、PHPで書かれたプログラムの実装に、攻撃に使われうる欠陥が残っている状態です。
OWASP(Open Worldwide Application Security Project)は、Webアプリケーションに共通するリスクをまとめています。「OWASP Top 10」という資料で、2025年に公表された最新版では、次の10種類が挙げられています。
| 順位 | リスクの名前 |
|---|---|
| 1 | Broken Access Control(アクセス制御の不備) |
| 2 | Security Misconfiguration(セキュリティの設定不備) |
| 3 | Software Supply Chain Failures(ソフトウェア供給網の不備) |
| 4 | Cryptographic Failures(暗号に関する不備) |
| 5 | Injection(インジェクション) |
このリストは、使う言語を問わず、Webアプリケーション全体に共通するリスクを示しています。PHPで作ったサイトも対象です。
PHPで起こりやすい脆弱性の種類
IPAの資料「安全なウェブサイトの作り方」(改訂第7版)は、届け出が多かった脆弱性を11種類に分けて解説しています。
| 脆弱性の種類 | 発生しうる脅威の例 |
|---|---|
| SQLインジェクション | データベースの情報の閲覧・改ざん |
| OSコマンド・インジェクション | サーバー内ファイルの改ざん、不正なプログラムの実行 |
| ディレクトリ・トラバーサル | 公開を想定しないファイルの閲覧 |
| セッション管理の不備 | 不正ログイン |
| クロスサイト・スクリプティング | 利用者のブラウザ上での不正な処理 |
同じ資料は、OSコマンドを実行できるPHPの関数として、exec()・system()・popen()等を挙げています。これらの関数に外部からの入力をそのまま渡す実装は危険です。
SQLインジェクションについては、SQL文の組み立てをすべてプレースホルダ(バインド)で実装することを、根本的解決として挙げています。
脆弱性対策の考え方(根本的解決と保険的対策)
IPAの同じ資料は、対策を「根本的解決」と「保険的対策」の2つに分けています。
根本的解決は、脆弱性の原因そのものをなくす対策です。たとえばSQLインジェクションでは、SQL文の組み立てをプレースホルダで実装することが根本的解決です。
保険的対策は、攻撃による影響を減らす対策です。たとえばエラーメッセージをそのままブラウザに表示しない設定は、保険的対策にあたります。
改修を発注するときは、どちらの対策を頼むのかを明確にすると、見積もりの範囲がそろいやすくなります。
サポートが終了したPHPを使い続けるリスク
PHP公式サイト(php.net)は、各バージョンの対応期間を「Supported Versions」のページで示しています。公開の初期リリースから2年は不具合・セキュリティ修正の両方を受け、その後2年は重大なセキュリティ修正のみを受けます。4年を過ぎると、そのバージョンへの修正提供は終わります。
2026年11月時点で対応中のバージョンは8.2・8.3・8.4・8.5です。PHP 8.2は、セキュリティ修正の提供が2026年12月31日までとされています。
PHP開発チームは2026年10月21日、PHP 8.2.35を公開しました。公式の発表は、未認証の遠隔コード実行を許す可能性がある脆弱性2件(CVE-2026-109618、CVE-2026-109619)を修正したと説明しています。完全な回避策はなく、更新だけが安全な選択だとしています。
サポートが終了したバージョンを使い続けると、同じような脆弱性が見つかっても、修正が提供されません。
脆弱性の対策を発注するときに確かめる点
改修を外部に発注するときは、次の点を伝えると、対応内容がそろいやすくなります。
| 確かめる点 | 内容 |
|---|---|
| 現在のPHPのバージョン | サポート対象かどうかで、対応の優先度が変わる |
| 使っているフレームワーク・CMS | 本体だけでなく、組み込んだ部品にも脆弱性が見つかることがある |
| 対応の範囲 | 根本的解決(実装の修正)か、保険的対策(影響の低減)か |
| 検証の方法 | 修正したあと、どう動作を確認するか |
| 本番環境への反映の手順 | バックアップを取ってから反映するか |
全ての種類を自分で判断できない場合は、分かっている情報だけを伝えて相談することもできます。
ミツモリーで見積もる場合の進め方
ミツモリー(mitsumo.li)は、株式会社ワンオブゼムが運営する、AIでシステム開発の概算見積もりを出すサービスです。見積もりは無料で、会員登録はいりません。
トップページの入力例には、「PHPの脆弱性対策をお願いしたい」が、おすすめの例として表示されています。
- 作りたいものを一言で書く
- AIが依頼の文から必要な機能を読み取り、その場で概算の金額を出す
- 見積書を依頼すると、概算見積書(PDF)をすぐに受け取れる
- 担当者が内容を確かめ、正式見積書をお送りする
概算見積書はAIによる概算で、拘束力はありません。正式な金額は、担当者が内容を確認してお送りする正式見積書でお知らせします。正式見積書の受付は平日10:00〜18:00(締切17:30)で、17:30を過ぎたご依頼と休業日のご依頼は、翌営業日にお送りします。
よくある質問
PHPの脆弱性とは何ですか?
PHPの脆弱性とは、PHPで書かれたプログラムの実装に、攻撃に使われうる欠陥が残っている状態です。SQLインジェクションやOSコマンド・インジェクションなど、IPAの資料は11種類に分けて解説しています。
PHPで特に注意する関数はありますか?
IPAの資料は、OSコマンドを実行できる関数として、exec()・system()・popen()等を挙げています。外部からの入力をそのまま渡す実装は避けます。
根本的解決と保険的対策は何が違いますか?
根本的解決は、脆弱性の原因そのものをなくす対策です。保険的対策は、攻撃による影響を減らす対策です。改修の発注では、どちらを頼むのかを明確にします。
サポートが終了したPHPを使い続けるとどうなりますか?
新しく見つかった脆弱性の修正が提供されません。php.net の「Supported Versions」のページで、使っているバージョンが対応中かどうかを確認できます。
OWASP Top 10とは何ですか?
OWASPが公表する、Webアプリケーションに共通する重大なリスクの一覧です。2025年版では、アクセス制御の不備など10種類が挙げられています。使う言語を問わず参考にされています。
脆弱性の改修を発注するときに何を伝えればよいですか?
現在のPHPのバージョン、使っているフレームワークやCMS、対応の範囲(根本的解決か保険的対策か)、検証の方法を伝えます。分かる範囲だけでも、相談の出発点になります。
脆弱性が見つかったら、すぐに全部直すべきですか?
対応の優先度は、脆弱性の種類と、サイトの構成によって変わります。IPAの資料を参考に、根本的解決を基本としつつ、対応の順序は依頼先と相談して決めます。
自分でPHPのバージョンを確認する方法はありますか?
サーバーの管理画面や、phpinfo()を使った確認方法があります。レンタルサーバーを使っている場合は、管理画面の案内か、サーバー会社への確認が確実です。
ミツモリーでPHPの脆弱性対策を見積もれますか?
見積もれます。トップページの入力例に「PHPの脆弱性対策をお願いしたい」があり、作りたい内容を一言で書くと、AIがその場で概算の金額を出します。会員登録はいりません。
参考にした資料
- OWASP「OWASP Top 10:2025」(2025年11月公表。Webアプリケーションに共通する重大なリスクの一覧)
- IPA(情報処理推進機構)「安全なウェブサイトの作り方」改訂第7版(2021年3月31日改訂。脆弱性の種類、根本的解決・保険的対策)
- IPA「安全なウェブサイトの作り方 - 1.1 SQLインジェクション」
- IPA「安全なウェブサイトの作り方 - 1.2 OSコマンド・インジェクション」(PHPのexec()等の注意点)
- PHP公式サイト「PHP: Supported Versions」(バージョンごとの対応期間)
- PHP公式サイト「PHP: News Archive - 2026」(2026年10月21日、PHP 8.2.35のセキュリティ公開情報)