我用 Findbugs 分析了一段代码,它报告了一个警告
servlet reflected cross site scripting vulnerability.
代码就是这样,第三行抛出警告:
String tickName = request.getParameter("ticko");
PrintWriter w = response.getWriter();
w.println("Unable to perform tickonem '" + tickName +"' because no tick with that name is active!"); //this line throws warning.
它的真正原因是什么以及如何解决它?
最佳答案
这样做的原因是将用户提供的数据附加到响应中而不进行任何转义。这很容易注入(inject)将在用户浏览器中执行的 javascript。为避免此类漏洞,您应该在发送回每个用户提供的数据之前对每个用户提供的数据进行 html 转义。您可以使用一些现有的库来为您执行转义,例如 StringEscapeUtils
关于http - Servlet 反射跨站脚本漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22899609/