【发布时间】:2013-06-06 09:44:22
【问题描述】:
我遇到了 Struts 1 框架的新问题。我需要过滤页面中的一些输入值,因此我编写了自定义过滤器来执行此操作。
它适用于未映射到任何形式的单个参数。但是当它映射到某些struts的Form字段时,它并没有获取参数。
有人知道如何处理吗?
这是我的过滤器的代码
public class XSSFillter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
chain.doFilter(new XSSRequest((HttpServletRequest) request), response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
还有
public class XSSRequest extends MultipartRequestWrapper{
public XSSRequest(HttpServletRequest request) {
super(request);
}
@Override
public String[] getParameterValues(String name) {
String[] values = super.getParameterValues(name);
if(values == null){
return null;
}
String[] newValues = new String[values.length];
for(int index = 0; index < values.length; index++ ){
newValues[index] = XSSFilterUtil.removeXSSTokens(values[index]);
}
return newValues;
}
@Override
public String getParameter(String name) {
String value = super.getParameter(name);
return XSSFilterUtil.removeXSSTokens(value);
}
@Override
public String getHeader(String name) {
String value = super.getHeader(name);
return XSSFilterUtil.removeXSSTokens(value);
}
}
当然我已经在 web.xml 中定义了
我猜这是最重要的部分之一。
if (isMultipart) {
parameterValue = multipartParameters.get(name);
} else {
parameterValue = request.getParameterValues(name);
}
因此,在一种情况下,parameterValue 取自 multipartParameters,而它们又在一些临时文件中定义。我认为最好的方法是修改所有请求参数,然后让它扔掉 Struts 1.3.8 库。
【问题讨论】:
-
在不知道自己在做什么的情况下很难提供帮助。 “过滤一些输入值”是什么意思?
-
我需要在 XSS 内容上过滤我的输入值。
-
你是怎么做到的?不是 XSS 过滤帖子,我指的是修改参数值的机制。我们需要代码。
-
我已经编辑了我的帖子。谢谢!
-
它是多部分表单吗?还是多部分和非多部分的行为相同?
标签: java parameters filter struts