Jsp 如何避免XSS与这一点潦草?

Jsp 如何避免XSS与这一点潦草?,jsp,xss,checkmarx,Jsp,Xss,Checkmarx,使用Checkmarx,这一页多次使用“request.getParameterNames()”,并被Checkmarx标记为“CGI_Reflected_XSS_All_Clients”(查询名称)。这个页面是“error.jsp”,所以它是一个通用页面,在我公司的多个应用程序中使用。发生意外错误时将显示此页面。为什么这样?谁知道呢,最好不要显示它,而是注销它。我对Checkmarx报告的易受攻击的修复代码非常陌生 <h3>Request Parameters</h3>

使用Checkmarx,这一页多次使用“request.getParameterNames()”,并被Checkmarx标记为“CGI_Reflected_XSS_All_Clients”(查询名称)。这个页面是“error.jsp”,所以它是一个通用页面,在我公司的多个应用程序中使用。发生意外错误时将显示此页面。为什么这样?谁知道呢,最好不要显示它,而是注销它。我对Checkmarx报告的易受攻击的修复代码非常陌生

<h3>Request Parameters</h3>
<pre>
<%
   lEnum = request.getParameterNames();
   while(lEnum.hasMoreElements())
   {
      String key = (String)lEnum.nextElement();
      String[] paramValues = request.getParameterValues(key);
      for(int i = 0; i < paramValues.length; i++)
      {
         out.println("  " + key + " : "  + paramValues[i]); 
      }
   }
%>
</pre>
请求参数

需要为HTML转义输出到页面的值。将引号、括号和符号替换为它们的实体。这可以通过以下库实现:


在传递给方法之前,使用SpringWeb的htmlitls.htmlEscape(变量)清理参数

你也可以试试

Variable=Variable.replace(“,”) 还有它

在传递给方法之前,在参数上使用这两个选项

Escaper escaper = HtmlEscapers.htmlEscaper();
out.println("  " + escaper.escape(key) + " : " + escaper.escape(paramValues[i]));