关于struts2漏洞(升级struts到最新版本)

由于struts旧版本爆出多个高危漏洞,对于安全性考虑需对struts升级到最新版本。

升级过程中遇到很多坑,经过一段时间的盘查发现,其实这个升级很简单。

我升级的是struts2.5.16,当前官网里面的最新版,以后就不晓得了。。。。咳咳

第一步:找jar包,为什么要找jar包?因为我维护的是老项目,如果你的不是请看最下面。

        这是一个很蛋疼的过程,因为看网上升级的方法,替换的jar包都不是很明确,五花八门。进过我逐一排查,反正试了蛮久,最后一下就搞定了。

        替换的jar包如下

        asm-5.2.jar      asm-commons-5.2.jar    asm-tree-5.2.jar    commons-fileupload-1.3.3.jar    

       commons-io-2.5.jar     commons-lang3-3.6.jar    commons-logging-1.1.3.jar    

       freemarker-2.3.26-incubating.jar   javassist-3.20.0-GA.jar      log4j-api-2.10.0.jar    

       ognl-3.1.15.jar    struts2-core-2.5.16.jar

       删除原来的旧包同上,xwork-core-2.3.16.3.jar这个也需要一并删除,最新版集成了该jar包

第二步:修改web.xml

              

旧版中:路径如下

新版中:路径如下

        

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

           替换成<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

第三步:修改struts.xml

           1.改掉头部

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

           2.将action设置动态访问

           <constant name="struts.enable.DynamicMethodInvocation" value="true" />

          3.package后面加一个strict-method-invocation="false"

  <package name="GameWebsite" namespace="/" extends="struts-default" strict-method-invocation="false">

三步做完了需要将tomcat里面的项目删除重新发布

页面访问如果可以访问后台则替换成功。

如果报错404,500,之类的,你需要跟据项目的结构替换jar包,或者增加配置,配置sturts.xml

struts升级很多坑,我也是从里面刚爬出来。爬出来发现,其实分分钟能搞定的事搞了这么久!!!

        作者吐槽:老项目都会存在这个问题,那些自己导jar包的项目,如果你的项目使用了maven,那么就不会有这种麻烦了,直接改下版本号搞定!

猜你喜欢

转载自blog.csdn.net/qq_34128089/article/details/80804882