我正在寻找使用PHP和SimpleXML的项目。我想有一个客户端应用程序将XML消息发送到Web服务器,然后让PHP脚本解析SimpleXML所需的值。通常,从安全角度来看,我总是会对任何客户端输入进行验证,因为它永远不会被信任。
我需要将任何安全解决方案纳入我的设计中吗? SimpleXML至少验证XML结构并优雅地处理错误吗?我假设我必须验证元素本身的值,以便下面的count中的值确实是一个整数而不是疯狂。
<root>
<count>1</count>
</root>
答案 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 '>' in <b>[...][...]</b> on line <b>2</b><br />
<br />
<b>Warning</b>: SimpleXMLElement::__construct(): <root><element>bad</element></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->__construct('<root><element>...')
#1 {main}
thrown in <b>[...][...]</b> on line <b>2</b><br />