struts2 攔截器修改request的parameters引數失敗的問題
阿新 • • 發佈:2019-02-08
為了解決struts2的xss(跨站指令碼攻擊)問題,我打算用struts2自帶的攔截器來過濾所有由request傳遞來的引數。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- 配置一系列常量,非必須 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!-- constant name="struts.devMode" value="true"/ -->
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.objectFactory.spring.autoWire" value="auto"></constant>
<constant name="struts.multipart.saveDir" value="/tmp"/>
<package name="default" namespace="/"
extends="struts-default, json-default">
<!-- 配置攔截器 -->
<interceptors>
<!-- 定義xss攔截器 -->
<interceptor name="xssInterceptor" class="xx.xx.xx(此處填寫攔截器對應的類)" ></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>
</package>
</struts>
一開始我配置的攔截棧是這樣的
<interceptor-stack name="myDefault">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="xssInterceptor"</interceptor-ref>
</interceptor-stack>
發現我執行過濾的那個類被執行了,但是action中注入的值沒有更改
只需要把順序換一下就好了。