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

目录
  • struts2拦截器修改request的parameters参数失败
  • 修改指定拦截器的参数(Struts2)

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"/>

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

(0)

相关推荐

  • Struts2之Action接收请求参数和拦截器详解

    技术分析之在Struts2框架中使用Servlet的API 1. 在Action类中也可以获取到Servlet一些常用的API 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的页面上. 提供JSP注册的页面,演示下面这三种方式 <h3>注册页面</h3> <form action="${ pageContext.request.contextPath }/xxx.action"

  • Struts2源码分析之ParametersInterceptor拦截器

    前言 ParametersInterceptor拦截器其主要功能是把ActionContext中的请求参数设置到ValueStack中,如果栈顶是当前Action则把请求参数设置到了Action中,如果栈顶是一个model(Action实现了ModelDriven接口)则把参数设置到了model中. 下面是该拦截器的doIntercept方法源码: @Override public String doIntercept(ActionInvocation invocation) throws Ex

  • java中的Struts2拦截器详解

    最近在学习struts的拦截器,现在来总结一下. 1.拦截器是什么? 拦截器相当于过滤器:就是将不想要的去掉,想要的留下.拦截器抽象出一部分代码可以用来完善原来的action.同时可以减轻代码冗余,提高重用率.通俗地讲就是一张网,过滤掉不需要的沙子,留下水. 2.拦截器的作用: 拦截器可以构成特定的功能.比如权限认证.日志记录和登陆判断. 3.拦截器的原理: 其每一个Action请求都在拦截器中,每一个action可以将操作转交给下面的拦截器,也可以直接退出到界面上. 4.定义拦截器: (1)自

  • 修改request的parameter的几种方式总结

    修改request的parameter的几种方式总结 这篇文章仅仅用来参考,本身不想写,request之所以不想让你修改parameter的值,就是因为这个东西一般不然改,有人问我为什么不让改,表面上说我只能说这属于篡改数据,因为这个使用户的请求数据,如果被篡改就相当于篡改消息,如果你一天给别人发消息发的是:你好,而对方收到的是:fuck you!,你会怎么想,呵呵!当然它主要是怕不安全把参数数据该乱了,因为程序员毕竟是自己写程序,尤其是在公共程序里面写,后台程序员发现自己的数据不对,也找不到原

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

    目录 struts2拦截器修改request的parameters参数失败 修改指定拦截器的参数(Struts2) struts2 拦截器修改request的parameters参数失败 为了解决struts2的xss(跨站脚本攻击)问题,我打算用struts2自带的拦截器来过滤所有由request传递来的参数. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC &quo

  • springboot HandlerIntercepter拦截器修改request body数据的操作

    实际工作中学习技术是最快.最深刻的.当然,自身的持续学习意识是必须的 技术栈版本: spring boot 2.0.2 遇到事儿了 近来做业务需求,前端同学fe将userId和userName放到request header中了. 后端api接口要想使用userId和userName,每个接口都要从header中获取. 试想一下,如果你有十个接口,那么每个接口都要写一遍 Object.setUserId(request.getHeader("userId")) 正如下面代码段 @Res

  • Struts2拦截器 关于解决登录的问题

    拦截器的工作原理如图 拦截器是由每一个action请求(request)都包装在一系列的拦截器的内部,通过redirectAction再一次发送请求. 拦截器可以在Action执行直线做相似的操作也可以在Action执行直后做回收操作. 我们可以让每一个Action既可以将操作转交给下面的拦截器,Action也可以直接退出操作返回客户既定的画面. 接下来我们该如何定义一个拦截器: 自定义一个拦截器如下: 1.实现Interceptor接口或者继承AbstractInterceptor抽象类. 2

  • 拦截器获取request的值之后,Controller拿不到值的解决

    目录 拦截器获取request的值之后,Controller拿不到值 原因 解决方法 使用拦截器获取Controller方法名和注解信息 方法一:通过request获得用户的URL 方法二:通过用户要访问的方法来判断是否有权限 方法三:自定义注解 拦截器获取request的值之后,Controller拿不到值 原因 在Spring中request的值只能被获取一次,拦截器获取之后就会导致Controller拿不到值 解决方法 将request的值进行备份,请求到达Controller的时候就会拿

  • struts2拦截器_动力节点Java学院整理

    如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack,如下(这里我是引用了struts2自带的checkbox拦截器): <interceptor-ref name="checkbox"> <param name="uncheckedValue">0</param> </interceptor-ref>

  • JavaWeb中Struts2拦截器深入分析(一)

    一.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 过滤器VS拦截器功能是一回事.过滤器是Servlet规范中的技术,可以对请求和响应进行过滤. 拦截器是Struts2框架中的技术,实现AOP(面向切面)的编程思想,是可插拔的, 可以对访问某个 Action 方法之前或之后实施拦截. 拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 在访问被拦截的方法时, Struts2拦截器链中的拦截器就会按其之前定义的顺序被依次调用 Struts2执行原理

  • Struts2拦截器Interceptor的原理与配置实例详解

    一.Struts2拦截器原理: Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的    拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器. 比如:应用要求用户登陆,且必须为指定用户名才可以查看系统中某个视图资源:否则,系统直接转入登陆页面.对于上面的需求,可以在每个Action的执行实际处理逻辑之前,先执行权限检查逻辑,但这种做法不利于代码复用.因为大部分Action里的权限检查代码都大同小异,故

  • 用拦截器修改返回response,对特定的返回进行修改操作

    在开发的时候遇到这样的需求: 小程序和ios已经上线,Android端还在调接口,我用了retrofit把所有的参数统一处理,封装了一个公共Bean类进行扩展,然后有一个接口在特定情况下无法解析json为公共bean类,这时候去修改bean和每个接口处理已经来不及,这时候就可以用到拦截器了,拦截器可以拦截request,可以处理url,可以设置缓存,当然也可以拦截response. 具体思路是:创建拦截器->根据chain获取response->根据response判断url是否需要特殊处理的

  • spring boot使用拦截器修改请求URL域名 换 IP 访问的方法

    目录 Interceptor 介绍 Interceptor 作用 自定义 Interceptor 案例1 :域名换IP访问 案例2: erverWebExchange通过拦截器修改请求url 案例3: 将请求路径中/idea都去掉 案例4: SpringBoot 利用过滤器Filter修改请求url地址 案例5.拦截器: WebMvcConfigurerAdapter拦截器 结语 Interceptor 介绍 拦截器(Interceptor)同 Filter 过滤器一样,它俩都是面向切面编程——

  • 防止未登录用户操作—基于struts2拦截器的简单实现

    一般,我们的web应用都是只有在用户登录之后才允许操作的,也就是说我们不允许非登录认证的用户直接访问某些页面或功能菜单项.我还记得很久以前我的做法:在某个jsp页面中查看session中是否有值(当然,在用户登录逻辑中会将用户名或者用户对象存入session中),如果session中用户信息为空,那么redirect 到登录页面.然后在除了登录页面外的其它所有需要验证用户已登录的页面引入这个jsp . 比如,我们将检查用户是否登录的代码放入一个jsp页面中,如 checkUser.jsp <%@

随机推荐