java – 当我需要转义Html字符串?
在我的遗留项目中,我可以看到在将字符串发送到浏览器之前使用escape
Html.
StringEscapeUtils.escapeHtml(stringBody); 我从api doc中知道了escapeHtml的用途.给出了一个例子: – For example: "bread" & "butter" becomes: "bread" & "butter". 我的理解是当我们在转义html之后发送字符串时它转换的浏览器职责 但是我没有得到原因,何时需要,如果我们发送字符串体而不转义html会发生什么?如果我们在将它发送到浏览器之前不做escapeHtml,那么成本是多少 解决方法
我可以想到几种可能性来解释为什么有时字符串不会被转义:
>或许原始程序员确信在某些地方字符串没有特殊字符(但是,在我看来这将是糟糕的编程习惯;为了防止未来的变化而逃避字符串的成本非常低) 编辑 – 尽管浏览器尽最大努力从糟糕的标记中恢复,但仍有几种情况会失败.如果您的示例字符串是属性值,则绝对需要转义引号.浏览器无法正确处理以下内容: <img alt=""bread" & "butter"" ... > 一般规则是任何不标记但可能混淆为标记的字符都需要进行转义. 请注意,有几种上下文可以在html文档中显示文本,并且它们具有单独的转义要求.在属性值中,您需要转义引号和&符号(但不是<).您必须转义在文档的字符集中没有表示的字符(如果您使用的是UTF-8,则不太可能,但情况并非总是如此).在文本节点内,只有&和<需要逃脱.在href值中,必须转义需要在URL中转义的字符(有时会双重转义,因此在浏览器取消它们一次之后它们仍会被转义).在CDATA块中,通常不应转义任何内容(在HTML级别). 最后,除了双重转义的危险之外,转义所有文本的成本是最小的:网络上的一小部分额外处理和一些额外字节. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |