4

我继承了一个包含 1000 多个 JSP 文件的大型代码库,其中充满了 XSS 漏洞。

代码充满

<%= request.getParameter("theparam")%>

out.println("some stuff before"+request.getParameter("theparam")+"and some other stuff");

String myVar = request.getParameter("theparam");
out.println(myVar);

我想保护所有文件,而不必单独检查所有文件。

我最好的方法是什么?

  • 对所有源文件执行“request.getParameter("xx")" 到 "StringEscapeUtils.escapeHtml(request.getParameter("xx")) 的“全部替换”?

  • 我可以以某种方式覆盖函数'request.getParameter',因此它默认为 stringescapeutils.escapehtml(request.getParameter("")); ?

谢谢

4

2 回答 2

3

我并不是说这是最好的方法,而是:

我可以以某种方式覆盖函数'request.getParameter',因此它默认为 stringescapeutils.escapehtml(request.getParameter("")); ?

使用 servlet 过滤器和包装 HTTP servlet 请求很容易实现。如何向 HttpServletRequest 添加验证逻辑中描述了这种方法。

然而,最全面的方法是在显示时转义,最好只在 JSP 中。太糟糕了,您还在 servlet 中生成 HTML。请参阅:Java 5 HTML 转义以防止 XSS

于 2012-07-13T21:50:33.750 回答
0

您可以执行以下操作

<%@ page import="org.apache.commons.lang.StringEscapeUtils" %>
String str=request.getParameter("urlParam");
String safeOuput = StringEscapeUtils.escapeXml(str);

希望这可以帮助您解决问题...

于 2018-10-22T10:49:59.303 回答