现有的Web应用程序正在Tomcat 4.1上运行.页面存在XSS问题,但我无法修改源代码.我决定编写一个servlet过滤器来在页面看到之前清理参数.
我想写一个像这样的Filter类:
import java.io.*;
import javax.servlet.*;
public final class XssFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
String badValue = request.getParameter("dangerousParamName");
String goodValue = sanitize(badValue);
request.setParameter("dangerousParamName", goodValue);
chain.doFilter(request, response);
}
public void destroy() {
}
public void init(FilterConfig filterConfig) {
}
}
Run Code Online (Sandbox Code Playgroud)
但ServletRequest.setParameter不存在.
在将请求传递给链之前,如何更改请求参数的值?
我在这里读到:
正如我在像其他一些问题,看到这一个,我注册在我的控制器这样的StringTrimmerEditor一个:
@Controller
public class MyController{
@InitBinder
public void initBinder(WebDataBinder binder)
{
binder.registerCustomEditor(StringTrimmerEditor.class,new StringTrimmerEditor(false));
}
Run Code Online (Sandbox Code Playgroud)
它编译并运行,但不起作用,它不会修剪数据.我不知道我错过了什么.任何人?
谢谢