ミツモリー

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

公開  ミツモリー編集部
PHPのコードが表示された画面とチェックリストを並べて確認している様子のイラスト

【結論】PHPの脆弱性とは、PHPで作ったWebサイトやシステムに見つかる、セキュリティ上の欠陥です。

この記事では、PHPで作ったサイトやシステムの管理を担当する方に向けて、脆弱性の種類と対策の考え方、改修を外部に発注するときに確かめる点をまとめます。

PHPの脆弱性とは

PHPの脆弱性とは、PHPで書かれたプログラムの実装に、攻撃に使われうる欠陥が残っている状態です。

OWASP(Open Worldwide Application Security Project)は、Webアプリケーションに共通するリスクをまとめています。「OWASP Top 10」という資料で、2025年に公表された最新版では、次の10種類が挙げられています。

順位リスクの名前
1Broken Access Control(アクセス制御の不備)
2Security Misconfiguration(セキュリティの設定不備)
3Software Supply Chain Failures(ソフトウェア供給網の不備)
4Cryptographic Failures(暗号に関する不備)
5Injection(インジェクション)

このリストは、使う言語を問わず、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の脆弱性対策をお願いしたい」が、おすすめの例として表示されています。

  1. 作りたいものを一言で書く
  2. AIが依頼の文から必要な機能を読み取り、その場で概算の金額を出す
  3. 見積書を依頼すると、概算見積書(PDF)をすぐに受け取れる
  4. 担当者が内容を確かめ、正式見積書をお送りする

概算見積書は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がその場で概算の金額を出します。会員登録はいりません。

参考にした資料

作りたいものを一言書くだけで、AI がその場で概算をお出しします。
会員登録は要りません。
ミツモリーで見積もる
ミツモリーならシステム開発会社が最短30分でシステム見積書発行!