我应该在哪里转义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