因为输入参数的多样性,我一直怀疑能否做全局性的参数过滤。没想到看tomcat的安全防护时竟然有这个建议。这本书可以在百度文库中搜到。
该书说道:Tomcat Valve可将程序代码插入Tomcat 中,并让该程序代码在不同的请求及响应处理阶段执行,而Web应用程序的内容则在中间阶段执行(即,在处理请求之后,处理响应之前)。Valve 不是Web 应用程序的一部分,而是可以当成Tomcat servlet container 的一部分来执行的程序模块。Valve 的另一项优点是,Tomcat 的系统管理员可以设定Valve 在所有部署的Web 应用程序或特定的Web 应用程序中执行—— 无论所需的范围为何。附录四中含有BadInputFilterValve.java 的完整源代码。
我看了下BadInputFilterValve.java源代码,主要的部分如下:
quotesHashMap.put("/"", """);
quotesHashMap.put("/'", "'");
quotesHashMap.put("`", "`");
angleBracketsHashMap.put("<", "<");
angleBracketsHashMap.put(">", ">");
javaScriptHashMap.put("document(.*)//.(.*)cookie", "document.cookie");
javaScriptHashMap.put("eval(//s*)//(", "eval(");
javaScriptH