java - Struts 2如何从请求中读取参数

标签 java struts2 xss interceptor model-driven

我已经实现了 XSS 过滤器,如下所示,

@Override
public String getParameter(String parameter) {
    String value = super.getParameter(parameter);

    return stripXSS(value);
}

@Override
public String getHeader(String name) {
    String value = super.getHeader(name);
    return stripXSS(value);
}

private String stripXSS(String value) 
{
    System.err.println("Initial Value "+value);

    if (value != null) 
    {
        // NOTE: It's highly recommended to use the ESAPI library and uncomment the following line to
        // avoid encoded attacks.
        value = ESAPI.encoder().canonicalize(value);
        
        System.err.println("Encoded Value "+value);
        
        // Avoid null characters
        value = value.replaceAll("\0", "");

        // Remove all sections that match a pattern
        for (Pattern scriptPattern : patterns){
            value = scriptPattern.matcher(value).replaceAll("");
        }
        
        System.err.println("Pattern Value "+value);
    }
    System.err.println("Final  Value "+value);
    return value;
}

几乎所有请求都会通过这些方法之一,但是当我使用 Struts 2 ModelDriven 方法时,不会调用这些方法。

Struts 如何检索参数,我可以在哪里剥离参数?

最佳答案

Struts2 使用 request.getParameterMap()request 创建参数的 Map 并将这些参数放入 ActionContext.

因此,您可以创建一个拦截器,从上下文中获取这些参数并执行您想要的操作。使用自定义堆栈或覆盖的操作配置向所有操作添加新的拦截器。

关于java - Struts 2如何从请求中读取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32139956/

相关文章:

java - 在 Wicket 中实现后台下载最简单的方法是什么?

java - spring.main.allow-bean-definition-overriding=true 是一种不好的做法吗

Javac 错过了我的主 .java 文件,但没有错过其他文件

java - tomcat输出一些乱码

Javascript 选项卡导致 HP fortify 扫描中出现严重错误 (XSS)

javax.net.ssl.SSLHandshakeException : sun. security.validator.ValidatorException:PKIX 路径构建失败:即使我已经创建了证书

java - 我们可以从 Action 类返回任何类对象到拦截器吗

java - struts2中执行并等待拦截器

asp.net-mvc - 如何在 ASP.Net MVC 4 中停止 JSON 结果中的 xss

javascript - 如何通过URL防止XSS?