使用 php 清理外部 xml 文件

Sanitize an external xml file with php

这是我的问题:

function parse_xml_to_json($url) {
    $fileContents = file_get_contents($url);
    $simpleXml = simplexml_load_string($fileContents, null
    , LIBXML_NOCDATA);
    $json = json_encode($simpleXml);
    return $json;
}
$jsonto = parse_xml_to_json('myxmlfile.html');
echo $jsonto;

本质上,我需要使用来自外部源的 XML 文件并循环显示一些数据。

我创建了一个从外部URL(file_get_contents)获取内容的函数,然后我把XML的字符串变成一个对象(我用LIBXML_NOCDATA作为参数,因为它包含 ),在我将对象转换为 JSON 文件之后,在最后一步,我回显了结果。

到目前为止一切顺利,它有效,但我想知道如果 XML 文件包含恶意脚本,我是否可以做任何事情。

函数 simplexml_load_string 和 JSON 编码是否足以防止恶意脚本或无效 XML?

您的代码容易受到拒绝服务 (DOS) 攻击。

$fileContents = file_get_contents($url);

这可能会超出您的内存限制。或者接近,但要花很长时间(在提供大量内容后,您从中间的陈旧服务器请求数据 - 然后每两秒只有一些小字节)。所以你的脚本会在消耗内存时“挂起”。

如果脚本随后可以通过另一个 HTTP 请求多次触发,这会消耗您的服务器资源(echo 语句表明这是完全可能的)。