struts怎么解决xss攻击

1548
2020/12/25 19:08:59
栏目: 网络安全
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

struts怎么解决xss攻击

struts解决xss攻击的方法:

1.采用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>

2.使用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();

  }

}

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: emlog如何防止xss攻击