欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP Struts过滤xss攻击的解决办法

程序员文章站 2023-11-21 21:05:52
jsp struts过滤xss攻击的解决办法 本方案采用struts2的拦截器过滤,将提交上来的参数转码来解决。 配置struts.xml

jsp struts过滤xss攻击的解决办法

本方案采用struts2的拦截器过滤,将提交上来的参数转码来解决。

配置struts.xml

<package name="default" namespace="/"
    extends="struts-default, json-default">
    <!-- 配置拦截器 -->
    <interceptors>
      <!-- 定义xss拦截器 -->
      <interceptor name="xssinterceptor" class="...此处填写拦截器类名"></interceptor>
      <!-- 定义一个包含xss拦截的拦截栈 -->
      <interceptor-stack name="mydefault">
        <interceptor-ref name="xssinterceptor"></interceptor-ref>
        <interceptor-ref name="defaultstack"></interceptor-ref>
      </interceptor-stack>
    </interceptors>
    <!-- 这个必须配置,否则拦截器不生效 -->
    <default-interceptor-ref name="mydefault"></default-interceptor-ref>
    <action>
    ...此处省略n个action
    </action>
  </package>

java代码,拦截器实现类

import java.util.map;

import org.apache.commons.lang3.stringescapeutils;

import com.opensymphony.xwork2.actioncontext;
import com.opensymphony.xwork2.actioninvocation;
import com.opensymphony.xwork2.interceptor.abstractinterceptor;

public class xssinterceptor extends abstractinterceptor{

  @override
  public string intercept(actioninvocation invocation) throws exception {
    // todo auto-generated method stub
    actioncontext actioncontext = invocation.getinvocationcontext();
    map<string, object> map = actioncontext.getparameters();
    for (map.entry<string, object> entry : map.entryset()) {
      string value = ((string[])(entry.getvalue()))[0];
      entry.setvalue(stringescapeutils.escapehtml4(value));//将提交上来的字符串进行转码
      //system.out.println((entry.getvalue()));
    }
    return invocation.invoke();
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!