SSH struts2漏洞升级2.5.30

1、背景

项目使用jdk1.7、tomcat7,在升级struts2.5.30版本中jar包出现不少问题

2、升级步骤

  2.1、删除项目中旧jar包

        

其中xwork-2.0.5.jar被整合进struts2-core中

  2.2、替换jar包

                

  2.3、更改web.xml文件

        修改路径:tomcat\webapps\ceims\WEB-INF

        原先的路径为<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        修改为 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

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

  2.4、修改struts.xml文件

        修改路径:Tomcat\webapps\ceims\WEB-INF\classes

     2.4.1、原头文件如下

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

        将2.0修改成2.5即可

     2.4.2、struts2从2.5版本开始,为了提升安全性,默认开启了严格的方法调用

        如果要使用通配符*,必须在package中设置 strict-method-invocation="false",修改如下

<package name=""  namespace="/" extends="json-default" strict-method-invocation="false"><!-- 启用通配符 -->
    <global-results>
		<result name="" type="json">
            <param name=""> </param>
        </result>
	</global-results>
    <action name="" class=""  method=""> </action>
</package>

     2.4.3、新增constant配置

<!--action设置动态访问-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<!--该属性指定需要Struts2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理-->
<constant name="struts.action.extension" value="action"/>

   2.5 、新增log4j2.xml文件

        保存路径:Tomcat\webapps\ceims\WEB-INF\classes

文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">

    <!--全局参数-->
    <Properties>
        <!-- <Property name="pattern">%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n</Property> -->
        <Property name="pattern">%d %p [%c] - %m%n</Property>
        <Property name="logDir">../logs</Property>
    </Properties>

    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="console"/>
            <AppenderRef ref="rolling_file"/>
        </Root>
    </Loggers>

    <Appenders>
        <!-- 定义输出到控制台 -->
        <Console name="console" target="SYSTEM_OUT" follow="true">
            <!--控制台只输出level及以上级别的信息-->
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <Pattern>${pattern}</Pattern>
            </PatternLayout>
        </Console>
        <!-- 同一来源的Appender可以定义多个RollingFile,定义按天存储日志 -->
        <RollingFile name="rolling_file"
                     fileName="${logDir}/ceims.log"
                     filePattern="${logDir}/ceims_%d{yyyy-MM-dd}.log">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <Pattern>${pattern}</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
            <!-- 日志保留策略,配置只保留七天
            <DefaultRolloverStrategy>
                <Delete basePath="${logDir}/" maxDepth="1">
                    <IfFileName glob="dust-server_*.log" />
                    <IfLastModified age="7d" />
                </Delete>
            </DefaultRolloverStrategy> -->
        </RollingFile>
    </Appenders>
</Configuration>

3、遇到的问题

报错

java.lang.NoSuchMethodError: org.apache.commons.lang3.text.StrSubstitutor.setValueDelimit

解决方法:删除掉冲突的artemis-http-client-1.0.1-SNAPSHOT.jar

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值