在静态分析期间,我在JSP代码中遇到了XSS漏洞。实际上我正在从我的servlet向JSP页面转发请求。 Requets包含一个JSON字符串。在JSP页面中,我正在从此JSON对象中检索appId值。我使用此appId值来使用XHR调用来检索更多信息。
<script type="text/javascript">
var appId;
// appContext is JSON string
var appContextStr=<%=request.getParameter("appContext")%>; // XSS Vulenrability detected
if(appContextStr!= null || !appContextStr.equals("")){
appId= appContextStr.appId;
}
</script>
如何解决此XSS问题?
答案 0 :(得分:0)
由于提交的数据应该是JSON:
答案 1 :(得分:0)
你可以URLencode&lt;%= request.getParameter(“appContext”)%&gt;在将其分配给appContextStr之前,如果您的值不具有非字母数字符号。
如果有人(不是用户本人)可以使用类似
的值指定appContext,则现在会触发漏洞“asdsa; alert('busted')”实际上是邪恶的javascript而不是alert()
尽管如此,并非所有用户控制的JSON都是可利用的,但静态分析工具却对任何可能的远程可能性抱怨。