当回显到页面时,simplepie $ itme-> get_content()输出是否需要转义?

时间:2015-10-30 14:27:29

标签: php wordpress rss escaping simplepie

我有一个WordPress插件,可以读取RSS源并将其输出到管理页面中的浏览器。在插件中,它使用WordPress中的标准feed.php模板(wp-includes / feed.php),该模板使用SimplePie通过WordPress获取提要。

该页面循环显示Feed项,并使用$item->get_title()$item->get_content()通过直接回显输出项目标题和内容。

我有一个用户联系我告诉我他们在他们的网站上进行了安全审核,但由于我们使用了$item->get_content()并且在输出到浏览器之前没有转发它而失败了,这是一个XSS漏洞,因为正在从供应商的网站上读取HTML并需要进行转义。

这是正确的吗?

在使用get_content()功能的所有文档中,它们显示了$item->get_content()结果的回显。

有人可以了解这一点,以便我可以通过安全审核小组和/或用户最好地解决这个问题 - 或者如果需要转义,则可以正确更新插件。

谢谢! 唐

1 个答案:

答案 0 :(得分:1)

审核错误。 SimlePie 在内部转义内容。如果查看SimplePie类源,您将看到此属性定义将被剥离的标记:

public $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');

因此<script>标签被剥离 - 因此不能进行XSS攻击。

这是SimplePie的默认行为,所以除非你有意通过调用:$feed->set_stupidly_fast(true)告诉它在快速模式下运行(因为你看到函数名不言自明:))或者调用{{1 }};它将以安全模式运行。

从SimplePie文档:

  

SimplePie通过清理数据来防范恶意攻击。