【发布时间】:2019-07-25 13:17:29
【问题描述】:
以下代码容易受到veracode扫描报告的跨站脚本攻击:
public void doPost(HttpServletRequest request,HttpServletResponse response)
{
byte[] inputBytes = request.getParameter("input").getBytes();
String name = request.getParameter("filename") == null?"excelReport":request.getParameter("filename").toString();
response.setContentType("application/vnd.ms-excel");
response.setContentLength(inputBytes.length);
response.addHeader("content-disposition", "attachment; filename="+name+".xls");
try {
response.getOutputStream().write(inputBytes, 0, inputBytes.length);
} catch (IOException e) {
e.printStackTrace();
}
}
我理解这行代码 - response.getOutputStream().write(inputBytes, 0, inputBytes.length); 容易受到 XSS 攻击。
如何在此处修复 XSS(跨站点脚本)漏洞?是否有任何 ESAPI 库可以用于 byte[] 数组来修复 XSS 漏洞?
【问题讨论】:
-
请分享查看代码。没有所有的部分很难回答
-
@avgvsts 视图层什么都没有。上面的servlet代码是为了方便excel下载而写的。
-
这里的问题是你只是复制了你在请求中得到的“输入”参数。
-
@Henry。我同意你的看法。你能告诉我如何清理这些输入字节以防止 XSS 攻击吗?
-
我猜,你的方法只是一个存根,因为仅仅发回输入没有多大意义。我建议你先完成你的业务逻辑。然后警告可能会消失。
标签: java xss owasp esapi veracode