0

这是我的问题:

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?

4

1 回答 1

0

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

$fileContents = file_get_contents($url);

这可能会破坏您的内存限制。或者接近,虽然需要很长时间(在提供大量内容后,您请求数据的服务器在中间过时 - 然后每几秒钟只有一些小字节)。因此,您的脚本将在消耗内存时“挂起”。

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

于 2021-06-15T22:43:47.417 回答