OWASP ESAPI encodeForHTML带有一些允许的格式化标签

lee*_*mes 5 html php security owasp esapi

在Web项目中,我们使用PHP中的OWASP ESAPI进行输出编码.在某些方面,我们希望允许HTML的子集用于少量格式化选项(例如,<i><b>),同时禁止所有其他标记和特殊字符(因此它们是使用&...;语法进行实体编码的).

我看到以下可能性来实现这一目标:

  1. 告诉OWASP ESAPI编码器白名单/允许这些标记,以便它只对所有其他HTML标记和实体进行正确编码.但这似乎并不受支持.然而,我们可能(也许)写一个允许这个的补丁.
  2. 使用ESAPI进行编码后解码列入白名单的标记.这会受到攻击吗?
  3. 对此用例使用一些其他输出编码技术.还有其他图书馆吗?

特别是,我需要以下标记和属性列入白名单:

  • <br>
  • <i>
  • <b>
  • <u>
  • <big>
  • <small>
  • <sub>
  • <sup>
  • <font color="...">
  • <ul> + <li>
  • <ol> + <li>

请注意,我们的应用程序具有安全性.这意味着我们要实现的任何方法都应该只接受上面的标记(可能还有一些格式化标记),其他所有方法都必须经过实体编码.通过查看代码的(简单)代码/解释,毫无疑问,这应该是容易验证的.代码越短,评论越容易.完全手工编制的编码器并不适合这种情况.

小智 2

听起来您真正要找的是 HTMLPurifier

http://htmlpurifier.org/

FWIW 我根本不隶属于 HTMLPurifier,我是 OWASP ESAPI 项目的项目负责人。