【PHP8.x】resolveExternalsプロパティの使い方

resolveExternalsプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

resolveExternalsプロパティは、PHPのDOMDocumentクラスにおいて、XML文書が外部エンティティを参照する際に、その外部エンティティを解決(ロード)するかどうかを制御するための真偽値(trueまたはfalse)を保持するプロパティです。

このプロパティをtrueに設定すると、DOMDocumentオブジェクトがXML文書を解析する際、文書内に記述された外部のDTD(Document Type Definition)ファイルや、別のXMLファイルなどの外部リソースへの参照を解決し、その内容をDOMツリーに含めようとします。一方で、falseに設定すると、これらの外部参照は無視され、パーサーは外部リソースをロードしようとしません。

PHP 8以降では、このresolveExternalsプロパティのデフォルト値はfalseに変更されました。これはセキュリティ上の理由から非常に重要な変更点です。外部エンティティの解決を許可すると、XML外部エンティティ攻撃(XXE攻撃)と呼ばれるセキュリティ上の脆弱性が生じる可能性があります。悪意のあるXML文書を処理した場合、システム内の機密情報が漏洩したり、不要なファイルが読み込まれたりする危険性があるため、信頼できないソースからのXML文書を扱う際には、このプロパティをfalseに設定し続けるか、明示的にfalseに設定することが強く推奨されます。

特定のビジネスロジックで外部DTDやXMLスキーマを参照し、文書の完全な構造検証や変換に外部ファイルのロードが不可欠な場合にのみ、セキュリティリスクを十分に理解した上で、このプロパティをtrueに設定することを検討してください。

構文(syntax)

1<?php
2$dom = new DOMDocument();
3$dom->resolveExternals = true; // または false
4?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

bool

このプロパティは、外部リソース(DTDなど)を解決するかどうかを示します。trueであれば解決し、falseであれば解決しません。

関連コンテンツ

関連プログラミング言語