经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Struts2 » 查看文章
解决struts2 拦截器修改request的parameters参数失败的问题
来源:jb51  时间:2022/3/7 14:37:51  对本文有异议

struts2 拦截器修改request的parameters参数失败

为了解决struts2的xss(跨站脚本攻击)问题,我打算用struts2自带的拦截器来过滤所有由request传递来的参数。

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
  3. <struts>
  4. ? ? <!-- 配置一系列常量,非必须 -->
  5. ? ? <constant name="struts.i18n.encoding" value="UTF-8"/>
  6. ? ? <!-- constant name="struts.devMode" value="true"/ -->
  7. ? ? <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
  8. ? ? <constant name="struts.objectFactory.spring.autoWire" value="auto"></constant>
  9. ? ? <constant name="struts.multipart.saveDir" value="/tmp"/>
  10. ? ? <package name="default" namespace="/"
  11. ? ? ? ? extends="struts-default, json-default">
  12. ? ? ? ? <!-- 配置拦截器 -->
  13. ? ? ? ? <interceptors>
  14. ? ? ? ? ? ? <!-- 定义xss拦截器 -->
  15. ? ? ? ? ? ? <interceptor name="xssInterceptor" class="xx.xx.xx(此处填写拦截器对应的类)"></interceptor>
  16. ? ? ? ? ? ? <!-- 定义一个包含xss拦截的拦截栈 -->
  17. ? ? ? ? ? ? <interceptor-stack name="myDefault">
  18. ? ? ? ? ? ? ? ? <interceptor-ref name="xssInterceptor"></interceptor-ref>
  19. ? ? ? ? ? ? ? ? <interceptor-ref name="defaultStack"></interceptor-ref>
  20. ? ? ? ? ? ? </interceptor-stack>
  21. ? ? ? ? </interceptors>
  22. ? ? ? ? <!-- 这个必须配置,否则拦截器不生效 -->
  23. ? ? ? ? <default-interceptor-ref name="myDefault"></default-interceptor-ref>
  24. ? ? </package>
  25. </struts> ? ?

一开始我配置的拦截栈是这样的

  1. <interceptor-stack name="myDefault">
  2. ? ? ? ? <interceptor-ref name="defaultStack"></interceptor-ref>
  3. ? ? ? ? <interceptor-ref name="xssInterceptor"</interceptor-ref>
  4. </interceptor-stack>

发现我执行过滤的那个类被执行了,但是action中注入的值没有更改

只需要把顺序换一下就好了。

修改指定拦截器的参数(Struts2)

  1. <!-- 修改prepareInterceptor的alwaysInvokePrepare属性值为false -->
  2. ? ? ?<interceptors>
  3. ? ? ? ? <interceptor-stack name="atzhu">//自定义的拦截器栈名。
  4. ? ? ? ? ? ?<interceptor-ref name="paramsPrepareParamsStack">
  5. ? ? ? ? ? ? ?<param name="prepare.alwaysInvokePrepare">false</param>
  6. ? ? ? ? ? ?</interceptor-ref>
  7. ? ? ? ? </interceptor-stack>
  8. ? ? ?</interceptors>
  9. ? ? ?<default-interceptor-ref name="atzhu"/>

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号