【问题标题】:XSS - OWASP HTML Sanitizer Filters <form>XSS - OWASP HTML Sanitizer 过滤器 <form>
【发布时间】:2016-05-10 20:30:46
【问题描述】:

我正在使用Java OWASP HTML Sanitizer (HtmlPolicyBuilder) 来清理我的网络应用程序中呈现的 HTML,由 3rd 方服务提供。

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

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


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

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

【问题讨论】:

    标签: java html xss owasp


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      正如 Sean 指出的那样,有人可以成功地通过网络钓鱼从您的用户那里获取一些信息。 不过,如果要添加更多信息,仅使用这些固定方法,您将拥有一个非常受限制的白名单,但也许这就是您想要的。

      您允许的元素是:

      “b”、“i”、“font”、“s”、“u”、“o”、“sup”、“sub”、“ins”、“del”、“strong”、“strike” ,“tt”,“代码”,“大”,“小”,“br”,“跨度”,“em”,“p”,“div”,“h1”,“h2”,“h3”,“ h4”、“h5”、“h6”、“ul”、“ol”、“li”、“blockquote”。

      allowStyling 只允许全局样式属性。 allowStandardUrlProtocols 将允许带有“http”、“https”、“mailto”协议的 url,无论您在何处引用 url(a:href img:src q:cite 等),但无论如何您都不允许这些元素或属性中的任何一个所以它本质上是没有用的。

      您可能需要花时间在线查看示例白名单(不仅适用于 OJHS),以了解通常允许的元素和属性,从而更好地制定您的白名单。

      【讨论】:

      • 这个答案似乎更准确。
      猜你喜欢
      • 2017-04-09
      • 2014-08-03
      • 2012-07-07
      • 2015-12-27
      • 2015-05-06
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多