0

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

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

<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 回答