我继承了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
答案 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);
希望这将帮助您解决问题...