关于struts2漏洞问题及解决办法

 关于Struts2漏洞引发的问题我就不详细细说了,最近在各大网站及论坛上都有描述,上面都列出了具体的解决办法对策,对我来讲,恰好遇到有现实的案例去解决,在参考了各大论坛、博客的文档以后作下总结,从Struts2.0.11升级到Struts2.3.15的经历,之间看了不少的博客,大概花了半天的时间,基本解决了问题。废话很少说直接来操做吧。 java

   首先确定要升级struts2的版本,官方2.3.15.1版本下载struts2.3.15.1地址,具体下载地址:http://mirrors.hust.edu.cn/apache//struts/binaries/struts-2.3.15.1-all.zip web

   下载以后,须要用到以下几个jar包: ajax

commons-fileupload-1.3.jar spring

commons-io-2.0.1.jar apache

commons-lang3-3.1.jar json

freemarker-2.3.19.jar(替换) jsp

javassist-3.11.0.GA.jar(新增) 测试

ognl-3.0.6.jar(替换) 网站

struts2-core-2.3.15.1.jar(替换) spa

struts2-dojo-plugin-2.3.15.1.jar

struts2-json-plugin-2.3.15.1.jar

struts2-junit-plugin-2.3.15.1.jar

struts2-spring-plugin-2.3.15.1.jar(替换)

xwork-core-2.3.15.1.jar(替换)

 

升级包以后启动应用会抛出异常,缘由在于struts2.0.x版本用有用到redirect时候,在struts2.3.15.1后result已经改变了,具体改换以下:

<result name="xxx" type="redirect-action">

改为

<result name="xxx" type="redirectAction">

改动后,再次启动,在console日志里能够看到会有使用的过时声明,如:

ActionContextCleanUp <<< is deprecated! Please use the new filters!  

在升级以后FilterDispatcher、ActionContextCleanUp已经不建议使用了,具体的解决办法是在web.xml中改下struts配置:

原来:

<filter>
   <filter-name>struts2</filter-name>
   <filter-class>
     org.apache.struts2.dispatcher.FilterDispatcher
   </filter-class>
</filter>

改为:

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  </filter-class>
</filter>

 

再次改了以后再启动,已经能够启动整个应用,可是具体的时候过程当中,仍是会遇到问题,我所碰到的是主要是两个问题:

一、原来使用struts2标签,在jsp页面上用静态方法时如@com.xx@xxx()时,这种页面会有异常,具体的解决办法以下:

在struts2文件中引入:

<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>

 

二、使用到<s:optiontransferselect ...标签时没法在action中取到选中的数据,具体解决办法,更新下optiontransferselect.js文件,文件在附件中,而且将原来jsp文件中引入以下标签:

<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>

,将原来<s:head ajax="head"... 改为 <sx:head/>

 

解决了这两个问题后,基本我就没发现有其余的问题,测试完成,具体的测试办法,可参考各类struts2漏洞的博客,里面有更详细的描述,我这里只讲一下解决办法,但愿能给码友们提供参考。

相关文章
相关标签/搜索