【问题标题】:How do you escape HTML attribute values in Java without the Owasp Library?在没有 Owasp 库的情况下,如何在 Java 中转义 HTML 属性值?
【发布时间】:2012-03-19 21:33:45
【问题描述】:

我一直在使用 Apache 的 StringEscapeUtils 来处理 HTML 实体,但是如果你想转义 HTML 属性值,有没有标准的方法可以做到这一点?我猜使用escapeHtml 函数不会解决问题,否则为什么Owasp Encoder interface 会有两种不同的方法来处理这个问题?

有谁知道转义 HTML 属性与实体之间的关系以及在没有 Owasp 库可用的情况下如何处理属性编码?

【问题讨论】:

    标签: java html escaping owasp


    【解决方案1】:

    看起来这是Owasp's XSS Prevention Cheat Sheet 的规则#2。注意是说的位:

    正确引用的属性只能用相应的转义 引用

    因此,我想只要属性正确地用双引号或单引号界定并且您将这些转义(即双引号(“)变为 " 并且单引号 (') 变为 '(或 ' ;)) 那么你应该没问题。注意 Apache 的 StringEscapeUtils.escapeHtmlinsufficient 用于此任务,因为它不会转义单引号 (');您应该使用 String 的 replaceAll 方法来这样做。

    否则,如果属性写成:<div attr=some_value>,那么你需要按照该页面上的建议和..

    使用 HH; 转义所有 ASCII 值小于 256 的字符 格式(或命名实体,如果可用)以防止切换出 属性

    但不确定是否有非 Owasp 标准实现。但是,无论如何最好不要以这种方式编写属性!

    请注意,这仅在您输入标准属性值时有效,如果该属性是 href 或某些 JavaScript 处理程序,那么情况就不同了。有关事件处理程序属性中的不安全代码可能发生的 XSS 脚本攻击示例,请参阅:http://ha.ckers.org/xss.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 2013-11-24
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      相关资源
      最近更新 更多