我用findbugs分析了一个代码,它报告了
Servlet反映了跨站点脚本漏洞。
代码是这样的,第三行抛出警告:

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.

真正的原因是什么?如何解决?

最佳答案

原因是将用户提供的数据附加到响应而不进行任何转义。这很容易注入javascript,而javascript将在用户浏览器中执行。为了避免此类漏洞,您应该在发送数据之前对每个用户提供的数据进行html转义。您可以使用一些现有的库来为您执行逃逸,例如“AA>”

关于css - Servlet反射(reflect)了跨站点脚本漏洞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22899609/

10-10 08:46