XSS - OWASP HTML 消毒剂过滤器<form>



我正在使用Java OWASP HTML Sanitizer(HtmlPolicyBuilder)来清理由第三方服务提供的web应用程序中呈现的HTML。

使用一些开箱即用的选项,我注意到<form>标记已被删除。我知道我可以将它们包含在allowElements("form")中,但有充分的理由不允许使用表单吗?

在我的网站上呈现他人的表单时,我应该考虑什么样的XSS攻击?


作为参考,我的消毒政策是:

new HtmlPolicyBuilder()
    .allowCommonBlockElements()
    .allowCommonInlineFormattingElements()
    .allowStyling()
    .allowStandardUrlProtocols()
    .toFactory()

网络钓鱼就是一个例子。显示用户名/密码表单,将操作参数指向攻击者的web服务器,并诱使用户相信他们需要重新验证。此外,如果用户启用了自动填充功能,则表单可以自动填充用户名/密码详细信息。

正如Sean所指出的,有人可以成功地从你的用户那里窃取一些信息。不过,为了添加更多信息,只使用这些固定的方法,你会有一个非常有限的白名单,但也许这就是你想要的。

你会允许的元素是:

"b"、"i"、"font"、"s"、"u"、"o"、"sub"、"ins"、"del"、"strong"、"strike"、"tt"、"code"、"big"、"small"、"br"、"span"、"em"、"p"、"div"、"h1"、。

allowStyling只允许全局使用样式属性。allowStandardUrlProtocols将允许使用"http"、"https"、"mailto"协议的url,无论您在哪里引用url(a:href img:src q:cite等),但无论如何都不允许使用这些元素或属性,因此它基本上是无用的。

你可能想花时间在线查看示例白名单(不仅仅是OJHS),以了解常见的允许元素&属性,以更好地开发您的白名单。

相关内容

最新更新