解决struts2 拦截器修改request的parameters参数失败的问题

 更新时间:2022年03月07日 11:20:46   作者:胡大炮的妖孽人生  
这篇文章主要介绍了解决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"/>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • springboot手动事务回滚的实现代码

    springboot手动事务回滚的实现代码

    这篇文章主要介绍了springboot手动事务回滚的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 提升java开发效率工具lombok使用争议

    提升java开发效率工具lombok使用争议

    这篇文章主要介绍了提升java开发效率工具lombok使用争议到底该不该使用的分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • RocketMQ Broker实现高可用高并发的消息中转服务

    RocketMQ Broker实现高可用高并发的消息中转服务

    RocketMQ消息代理(Broker)是一种高可用、高并发的消息中转服务,能够接收并存储生产者发送的消息,并将消息发送给消费者。它具有多种消息存储模式和消息传递模式,支持水平扩展和故障转移等特性,可以为分布式应用提供可靠的消息传递服务
    2023-04-04
  • JavaWeb中HttpSession中表单的重复提交示例

    JavaWeb中HttpSession中表单的重复提交示例

    这篇文章主要介绍了JavaWeb中HttpSession中表单的重复提交,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • 浅谈缓冲字符流 BufferedReader BufferedWriter用法

    浅谈缓冲字符流 BufferedReader BufferedWriter用法

    这篇文章主要介绍了缓冲字符流 BufferedReader BufferedWriter的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 关于Kafka消费者订阅方式

    关于Kafka消费者订阅方式

    这篇文章主要介绍了关于Kafka消费者订阅方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 使用Springboot根据配置文件动态注入接口实现类

    使用Springboot根据配置文件动态注入接口实现类

    这篇文章主要介绍了使用Springboot根据配置文件动态注入接口实现类,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java利用oss实现下载功能

    java利用oss实现下载功能

    这篇文章主要为大家详细介绍了java利用oss实现下载功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Spring Boot 排除某个类加载注入IOC的操作

    Spring Boot 排除某个类加载注入IOC的操作

    这篇文章主要介绍了Spring Boot 排除某个类加载注入IOC的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 强烈推荐MyBatis 三种批量插入方式的比较

    强烈推荐MyBatis 三种批量插入方式的比较

    这篇文章主要介绍了强烈推荐MyBatis 三种批量插入方式的比较,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07

最新评论