【PHP8.x】C14Nメソッドの使い方

C14Nメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Dom\XMLDocumentクラスのC14Nメソッドは、XMLドキュメントを正規化(Canonicalization)するメソッドです。XMLドキュメントは、同じ情報を保持していても、属性の順序、空白の扱い、エンティティ参照などによって、異なる表現を持つことがあります。C14Nメソッドは、これらの差異を解消し、XMLドキュメントを一意の形式に変換することで、デジタル署名や比較などの処理を確実に行えるようにします。

具体的には、C14NメソッドはXMLドキュメント全体、または指定されたノード以下を、W3CのCanonical XML仕様に従って正規化します。正規化されたXMLは、同じ論理構造を持つドキュメントであれば、常に同じバイト列として表現されるため、セキュリティ関連の処理において重要な役割を果たします。

C14Nメソッドには、正規化の範囲、コメントの扱い、アルゴリズムなどを指定するためのオプション引数があります。これらのオプションを適切に設定することで、様々な要件に対応した正規化処理を実現できます。例えば、コメントを含めるか否か、属性の順序をどのように扱うか、名前空間の処理方法などを細かく制御できます。

C14Nメソッドを使用することで、XMLドキュメントの表現形式の違いによる問題を回避し、システムの信頼性と相互運用性を高めることができます。特に、デジタル署名やXMLセキュリティ関連の処理を行う際には、C14Nメソッドによる正規化が不可欠となります。

構文(syntax)

1DOMDocument::C14N(string $uri, int $exclusive = 1, array $withComments = [], array $prefixes = []) : int|false

引数(parameters)

bool $exclusive = false, bool $with_comments = false, ?array $xpath = null, ?array $ns_prefixes = null

  • bool $exclusive = false: 排他的な正規化を行うかどうかを指定します。trueの場合、指定されたXPathノードとその子孫のみが正規化されます。
  • bool $with_comments = false: コメントを含めて正規化するかどうかを指定します。
  • ?array $xpath = null: 正規化の対象とするXPathノードの配列を指定します。
  • ?array $ns_prefixes = null: 名前空間のプレフィックスを配列で指定します。

戻り値(return)

string|false

このメソッドは、DOMDocumentオブジェクトをCanonical XML (C14N) 形式の文字列として返します。指定されたオプションに基づいて、整形されたXML文字列またはfalseを返します。

【PHP8.x】C14Nメソッドの使い方 | いっしー@Webエンジニア