1

我允许客户在网站上共享 xml 文件,他们可以上传和下载文件。我使用 php 和 simpleXML 来解析文件,但现在不做任何检查来验证文件,除了:

if( ! $xml = simplexml_load_file('xml/'.$xml_file) ){
    echo 'unable to load XML file';
// run redirect script and explain there was a problem with the XML file
}

我尝试使用谷歌搜索并无法真正找到明确的答案是是否有人可以在 XML 中上传病毒。这听起来有些牵强,但普遍的共识是任何文件都可能带有病毒。我找不到任何关于他们如何在 XML 文件中植入病毒或我可以做些什么来检查恶意代码的信息。

我确切地知道 XML 文件应该包含什么格式,即那里有哪些节点,我可以创建一个可接受的节点列表,如果它包含任何不接受拒绝文件的节点吗?

病毒是否植入节点内,例如

<node ="<?php delete * from table where id > 0; ?>" 

或类似的东西,这是否意味着该病毒仅在其在 Internet 浏览器或应用程序中运行时才被启用?

所有 xml 文件用于存储将被解析以显示表格的设置和表格属性,xml 文件通常具有表格中单元格的宽度和颜色等值和属性,它也将运行在用 C# 编写的桌面应用程序做几乎相同的事情。

有没有办法逃避 XML 中的注入/病毒,或者有什么资源可以指向我可以阅读的地方。

4

1 回答 1

2

有一些针对处理 XML 的系统的一般攻击:

然后有人可能会针对特定的 XML 处理器。例如,只需查看针对 libxml2 提交的 CVE

所以一般来说,您应该验证来自外部源的 XML 文件。大多数时候,您会希望禁止内部 DTD 子集,尤其是实体声明。可以使用 DTD、XML Schema 或 RELAX NG 轻松检查 XML 文件的结构。

于 2014-02-01T17:58:14.833 回答