客户端使用SimpleXML提供XML问题?

时间:2013-11-04 02:41:08

标签: php xml

我正在寻找使用PHP和SimpleXML的项目。我想有一个客户端应用程序将XML消息发送到Web服务器,然后让PHP脚本解析SimpleXML所需的值。通常,从安全角度来看,我总是会对任何客户端输入进行验证,因为它永远不会被信任。

我需要将任何安全解决方案纳入我的设计中吗? SimpleXML至少验证XML结构并优雅地处理错误吗?我假设我必须验证元素本身的值,以便下面的count中的值确实是一个整数而不是疯狂。

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

1 个答案:

答案 0 :(得分: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 />