在没有 Owasp 库的情况下,如何在 Java 中转义 HTML 属性值?
Posted
技术标签:
【中文标题】在没有 Owasp 库的情况下,如何在 Java 中转义 HTML 属性值?【英文标题】:How do you escape HTML attribute values in Java without the Owasp Library? 【发布时间】:2012-03-19 21:33:45 【问题描述】:我一直在使用 Apache 的 StringEscapeUtils
来处理 html 实体,但是如果你想转义 HTML 属性值,有没有标准的方法可以做到这一点?我猜使用escapeHtml
函数不会解决问题,否则为什么Owasp
Encoder interface 会有两种不同的方法来处理这个问题?
有谁知道转义 HTML 属性与实体之间的关系以及在没有 Owasp 库可用的情况下如何处理属性编码?
【问题讨论】:
【参考方案1】:看起来这是Owasp's XSS Prevention Cheat Sheet 的规则#2。注意是说的位:
正确引用的属性只能用相应的转义 引用
因此,我想只要属性正确地用双引号或单引号界定并且您将这些转义(即双引号(“)变为 " 并且单引号 (') 变为 '(或 ' ;)) 那么你应该没问题。注意 Apache 的 StringEscapeUtils.escapeHtml
将 insufficient 用于此任务,因为它不会转义单引号 (');您应该使用 String 的 replaceAll
方法来这样做。
否则,如果属性写成:<div attr=some_value>
,那么你需要按照该页面上的建议和..
使用 HH; 转义所有 ASCII 值小于 256 的字符 格式(或命名实体,如果可用)以防止切换出 属性
但不确定是否有非 Owasp 标准实现。但是,无论如何最好不要以这种方式编写属性!
请注意,这仅在您输入标准属性值时有效,如果该属性是 href
或某些 javascript 处理程序,那么情况就不同了。有关事件处理程序属性中的不安全代码可能发生的 XSS 脚本攻击示例,请参阅:http://ha.ckers.org/xss.html。
【讨论】:
以上是关于在没有 Owasp 库的情况下,如何在 Java 中转义 HTML 属性值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有外部库的情况下在 React 中实现 Google Maps JS API?