DOMDocument :: loadHTMLFile()安全吗?

时间:2012-07-13 10:56:34

标签: php

有人可以通过此方法将一些恶意代码注入我的脚本吗?如果有人可能,最佳做法是什么?

我正在尝试创建类似于reddit的方式来建议标题。

3 个答案:

答案 0 :(得分:1)

真正简短的回答是。一般来说,HTML的任何“外来”加载都是不安全的 - 实际上,任何来自用户的任何数据的加载都可能是不安全的 - 所有用户提供的数据必须必须进行验证和审查

但是,根据您提供的信息,无法给出明确的答案。这是因为它取决于哪个文件,文件是如何控制的,一旦加载文件你会怎么做。

添加此信息,也许我可以给出更好的答案。

答案 1 :(得分:0)

我假设当你询问该函数/方法的安全性时,你正在谈论注入一些将在服务器上执行而不是XSS的代码。

我不是C / C++专家,但是看dom_load_html()'s source code这是loadHTMLFile()背后的方法我可以看到它遵循结构良好的逻辑和除了在遇到问题时安全地失败,流量也得到很好的控制。

同样,我是新手,您可能需要C / C++上的专家,以上就是我个人的观点。

答案 2 :(得分:-1)

与此相关的至少一个安全问题: https://www.mediawiki.org/wiki/XML_External_Entity_Processing

上面的页面说XML标准定义了一种指定外部实体的方法,该实体可以指定从中加载数据的URL。它也可以从本地资源加载数据。

PHP的xml库使用libxml2,默认情况下会实现该行为。有一种方法可以禁用它,但这也将禁用该库的其他功能。最好的方法只是针对loadXML()和loadHTML()方法禁用它:

    $dom = new DOMDocument();
    $oldValue = libxml_disable_entity_loader( true );
    $dom->loadXML( $xml );
    libxml_disable_entity_loader( $oldValue );