我用这种方式在JSP中显示字符串:
${someString}
Run Code Online (Sandbox Code Playgroud)
当然,这个字符串可能包含特殊的html字符.目前可以HTML注入恶意代码(例如,如果someString是javascript包含 - <script src...>).
如何在打印前确保所有字符串都被转义?
我正在使用Spring MVC和JSP.
我想在JSP页面中转义字符.哪个更合适,escapeXml还是escapeHtml?
我觉得我错过了一些东西 - 从看起来似乎,JSP开箱即用,支持标签,因为这个问题的答案显示(那家伙问的是一个纯粹的jsp问题,得到了一个涉及标签的答案).但是,如果我尝试运行给定的代码
<c:out value="${myString}"/>
Run Code Online (Sandbox Code Playgroud)
(myString当然,在定义之前),jsp只是将上面的行写入html.
我是否必须做一些额外的事情来启用它?
我的JSP中的以下代码段在input标签上造成了跨站点脚本漏洞。
<form name="acctFrm" method="post" action="<%=contextPath%>/form/acctSummary?rpt_nm=FIMM_ACCT_SUMM_RPT">
<table>
<tr>
<td>Account Id:</td>
<td>
<input class="tbl1" type="text" id="acctId" name="acctId" size="20" maxlength="10" value="<%=rptBean.getAcctId()%>"/>
<a href="javascript:doAcctSubmit()"><img class="tbl1" src="<%=contextPath%>/img/Submit.gif" border="0" /></a>
</td>
</tr>
</table>
</form>
Run Code Online (Sandbox Code Playgroud)
在渗透测试期间,他们可以通过在标签的value属性中注入警报脚本来向用户发出一些随机消息,如下所示
<input class="tbl1" type="text" id="acctId" name="acctId" size="20" maxlength="10" value="1"><script>alert(12345)</script>" />
Run Code Online (Sandbox Code Playgroud)
这里的问题是什么,将会解决什么。
我正在阅读有关XSS的一些在线参考资料,但我仍然不确定100%是什么问题。
任何帮助将不胜感激。
谢谢,黛娜
jsp ×3
escaping ×2
cross-site ×1
html ×1
java ×1
jstl ×1
spring ×1
spring-mvc ×1
xml ×1
xss ×1