很长一段时间,我想知道在某些特定情况下保护输入和允许一些html标签的最佳方法。
典型的情况是管理员想要在xss(例如)上写一篇文章,该文章将存储在数据库中,并将显示给用户。此管理员有机会编写<b>
之类的标签来格式化文本,但也可以像<javascript>
一样来解释攻击。如果我使用Zend_Filter_StripTags
我可以允许管理员在文本中放置无害的html标记,例如<b>
,但出于安全原因,我不允许他放置像<javascript>
这样的标记。
另一方面,如果我使用Zend_Filter_HtmlEntities
我允许管理员安全地编写每个标签,但是当文章显示时,文本没有格式化。最后,如果我在系统显示文章之前使用Zend_Filter_HtmlEntities
和解码方法,我对第一种情况也有同样的问题。
有谁知道解决这个问题的最佳方法?
答案 0 :(得分:3)
HTML Purifier是一个符合标准的HTML过滤器库 用PHP。 HTML Purifier不仅会删除所有恶意代码 (更为人熟知的是XSS)经过全面审核,安全可靠 许可白名单,它还会确保您的文件是
符合标准,只有通过全面的方式才能实现 了解W3C的规范。
答案 1 :(得分:2)
使用Zend_Filter_HtmlEntities转义所有HTML标记,然后使用Zend_Markup
通过BBCode注释提供格式设置。
答案 2 :(得分:0)