解決struts2 攔截器修改request的parameters參數失敗的問題

struts2 攔截器修改request的parameters參數失敗

為瞭解決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中註入的值沒有更改

隻需要把順序換一下就好瞭。

修改指定攔截器的參數(Struts2)

<!-- 修改prepareInterceptor的alwaysInvokePrepare屬性值為false -->
     <interceptors>
        <interceptor-stack name="atzhu">//自定義的攔截器棧名。
           <interceptor-ref name="paramsPrepareParamsStack">
             <param name="prepare.alwaysInvokePrepare">false</param>
           </interceptor-ref>
        </interceptor-stack>
     </interceptors>
     <default-interceptor-ref name="atzhu"/>

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: