本文小编为大家详细介绍“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中注入的值没有更改
只需要把顺序换一下就好了。
<!-- 修改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"/>
读到这里,这篇“struts2拦截器修改request的parameters参数失败怎么解决”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。