request.getParameter防范XSS:最佳做法是什么?

时间:2012-07-13 21:46:31

标签: jsp tomcat xss

我继承了1000多个充满XSS漏洞的JSP文件的大型代码库。

代码已满

<%= 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“)”上的'replace all'到'StringEscapeUtils.escapeHtml(request.getParameter(“xx”))吗?

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

日Thnx

2 个答案:

答案 0 :(得分:3)

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

  

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

可以使用servlet过滤器和包装HTTP servlet请求轻松实现。 How to add validation logic to HttpServletRequest中描述了这种方法。

然而,最全面的方法是在显示时逃避,最好只在JSP中。太糟糕了,你也在servlet中生成HTML。请参阅:Java 5 HTML escaping To Prevent XSS

答案 1 :(得分:0)

您可以执行以下操作

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

希望这将帮助您解决问题...