我应该在哪里转义HTML字符串,JSP页面或Servlet?[重复]

我很乐意为我提供一套明确的准则或规则来处理转义字符串。我用于转义字符串的是apache commons-lang-

xxjar库。具体来说就是StringEscapeUtils.escapeHtml(String toEscape)方法。

我需要知道:

(1)在JSP页面或Servlet中,最好在哪里转义字符串?

(2)您如何推荐JSTL中的StringEscapeUtils.escapeHtml(..)或

(3)处理多行字符串更好,最好直接在字符串中使用或\ n和nl2br()方法:

String strError = "Invalid username.\nPlease try again.";

要么

String strError = "Invalid username.<br>Please try again.";

(4)我将如何转义接收通配符的字符串,例如:

String strError = "Invalid user [%s].<br>Please specify another user."

(5)由于javascript转义字符不同。我应该使用什么来转义将在JSP页面的javascript部分内呈现的Java字符串(例如var name =

"<%=javaStringHoldingName%>")。

回答:

您只需要在可能会造成伤害的地方完全避开它即可。在这种情况下,它就在视图中。当用户控制的HTML插入视图中的所有HTML中时,可能会造成伤害。这是XSS的来源。

在设计良好的JSP页面中(阅读:_no_scriptlets,JSTL为您提供了逃脱HTML/XML的<c:out>标记和fn:escapeXml()功能。

<c:out value="${param.foo}" />

<input type="text" name="foo" value="${fn:escapeXml(param.foo)}" />

以上是 我应该在哪里转义HTML字符串,JSP页面或Servlet?[重复] 的全部内容, 来源链接: utcz.com/qa/408135.html

回到顶部