我在数据库中存储了html,我需要将它输出到页面中。
<b>bold text</b>,而不是粗体文本。除了一些标签之外,我怎么能逃避一切呢?我正在考虑应用转义(),然后搜索<b>和</b>并取消它们。那能行吗?你看到它有安全问题吗?我也不确定如何搜索<b></b>标记。可能是为了这个还是怎么的?
P.S.我的意思是转义()是Zend中的一个函数。我相信这相当于htmlspecialchars()。
发布于 2011-06-01 00:15:21
逃跑是一条路。如果您只需要从html转义中选择几个要转换回来的标记,那么您就不会遇到XSS漏洞。
解决方法标记在这方面没有任何优势,许多失败的BBcode解析器都证明了这一点。
(然而,使用HTMLPurifier代替来回转换可能是明智的。)
发布于 2011-06-01 00:14:10
如果数据库中的HTML来自您不信任的用户,您应该允许他们访问标价或类似的“安全”编辑环境,这样他们就可以准备他们想要的标记,而不允许注入HTML。
执行选择性筛选的尝试经常是错误的,攻击者无法插入恶意代码。所以不要让他们编写原始HTML。
发布于 2011-06-01 00:14:54
htmlspecialchars_decode()是htmlspecialchars()的反面。可以取消转义,但是没有限制标记的参数。
如果html是由用户编写的,那是的坏主意:)
https://stackoverflow.com/questions/6194913
复制相似问题