Struts2升级到2.5.16

    在对项目进行安全检测的时候发现因为Struts2版本的问题,项目存在着很大的漏洞。因此需要对Struts2进行升级,解决漏洞。
    直接将Struts2升级到最新版本2.5.16。
    首先需要下载struts2.5.16的包,下面是下载地址,下载里面有很多包,下载下来打来关于lib的解压文件,很多升级包在这个里面就可以找到。
    struts2.5.16版本下载链接:http://mirrors.hust.edu.cn/apache/struts/2.5.16/struts-2.5.16-all.zip
    在升级struts2到2.5.16版本需要升级的包里面有一个包是jackson-dataformat-xml-2.1.2.jar,这个包在上面地址上面是无法下载的,它的下载地址在下面
    http://repo1.maven.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.1.2/jackson-dataformat-xml-2.1.2.jar
    下载完之后,要做的就是jar包替换,在替换的时候需要注意的是,直接删除项目中lib下的jar包是无法删除的。右键单击项目,选择build path,在这个里面可以看到当前项目需要用到的jar包,选中移除,然后到项目
中商储即可。(温馨提示:在删除之前最好做一个原来包文件的备份,防止后面需要找不到)。删除原来的jar包后换上2.5.16的包即可。下面罗列需要更换的包。
    struts2-core-2.5.16.jar、struts2-json-plugin-2.5.16.jar、log4j-api-2.10.0.jar、xstream-1.4.10.jar、commons-io-2.5.jar、commons-lang3-3.6.jar

    commons-fileupload-1.3.3.jar、freemarker-2.3.26-incubating.jar、javassist-3.20.0-GA.jar、jackson-annotations-2.9.0.jar、jackson-core-2.9.4.jar

    jackson-databind-2.9.4.jar、jackson-dataformat-xml-2.1.2.jar、struts2-rest-plugin-2.5.16.jar
    如果项目中没有的包直接添加即可,删掉xwork-core-2.3.28.1.jar,如果没有不用理会。
    上面的包我是都替换了,但是个人认为只需要替换struts2-core-2.5.16.jar、struts2-json-plugin-2.5.16.jar即可,由于项目要求解决漏洞的时间比较紧,所以没有做深一步的研究。
  
    替换完包之后需要做的是修改web.xml文件,在web.xml中找到关于struts2的前端控制器的配置,进行修改
    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    StrutsPrepareAndExecuteFilter的路径,以前是org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter修改后没有了.ng


    修改完web.xml文件之后,需要修改的是struts.xml文件,在struts.xml文件中添加下面内容
    <constant name="strict-method-invocation" value="false"/>
    <constant name="struts.mapper.indexMethodName" value=""/>
    <constant name="struts.mapper.postMethodName" value=""/>
    这是关于常量的修改,对于后面两个常量的解释是,在以前的struts2版本中,如果不指定action访问的方法,则会去访问一个默认的方法execute,在这里将这个设置为空。在这里如果不为空,则不会将action中配置的
method传递过来。
    

    在struts.xml中设置所有方法都被允许,在package标签中设置,在package标签中添加<global-allowed-methods>regex:.*</global-allowed-methods>
    global-allowed-methods在package中的位置必须是在所有action之前,在所有其他global之后,不然就会报错,需要注意的是global-allowed-methods这个属性只在同一个package中起作用。到此我的项目关于Struts2的
升级工作就完成了。
    最后,给大家介绍一篇关于Struts2升级到2.5.16的文章,我也是第一次升级,都是跟着做的。
    https://blog.csdn.net/a_c_c_a/article/details/79920559

猜你喜欢

转载自blog.csdn.net/qq_40386113/article/details/81087058
今日推荐