0

PHP と SimpleXML を使用するプロジェクトを検討しています。クライアント アプリで XML メッセージを Web サーバーに送信し、PHP スクリプトで SimpleXML に必要な値を解析したいと考えています。一般に、セキュリティの観点から、クライアントの入力は決して信頼できないため、常に検証を行います。

設計に組み込む必要のあるセキュリティ ソリューションはありますか? SimpleXML は、少なくとも XML 構造を検証し、エラーを適切に処理しますか? 要素自体の値を検証して、以下の count の値が実際には整数であり、クレイジーなものではないことを確認する必要があると思います。

<root>
    <count>1</count>
</root> 
4

1 に答える 1

0

XML が無効な場合、SimpleXML は例外をスローします。

$xml = '<root><element>bad</element></root';
$sxml = new SimpleXMLElement($xml);

出力

<br />
<b>Warning</b>:  SimpleXMLElement::__construct(): Entity: line 1: parser error : expected '&gt;' in <b>[...][...]</b> on line <b>2</b><br />
<br />
<b>Warning</b>:  SimpleXMLElement::__construct(): &lt;root&gt;&lt;element&gt;bad&lt;/element&gt;&lt;/root in <b>[...][...]</b> on line <b>2</b><br />
<br />
<b>Warning</b>:  SimpleXMLElement::__construct():                                   ^ in <b>[...][...]</b> on line <b>2</b><br />
<br />
<b>Fatal error</b>:  Uncaught exception 'Exception' with message 'String could not be parsed as XML' in [...][...]:2
Stack trace:
#0 [...][...](2): SimpleXMLElement-&gt;__construct('&lt;root&gt;&lt;element&gt;...')
#1 {main}

thrown in <b>[...][...]</b> on line <b>2</b><br />
于 2013-11-04T02:57:07.103 に答える