关于struts2.3.4升级到struts2.3.15.2的问题

最近接到上面安全中心的通知, 说我们的工程有struts2的漏洞, 一看是S-016/S-017类似远程执行恶意代码的漏洞, 好吧升级。

之后各种百度升级好后, 碰到一个恶心的问题, jsp的<s:action>标签出错, 例如<s:action name="attach!findAll" executeResult="true" namespace="">
</s:action>  , 控制台会告诉你attach!findAll 找不到方法, 然后各种百度google, 然后找到一篇说“struts.enable.DynamicMethodInvocation”,


struts.enable.DynamicMethodInvocation

作用:动态调用action方法,action!method

源码:org.apache.struts2.dispatcher.mapper.DefaultActionMapper

 

    protected ActionMapping parseActionName(ActionMapping mapping) {
        if (mapping.getName() == null) {
            return null;
        }
        if (allowDynamicMethodCalls) {
            // handle "name!method" convention.
            String name = mapping.getName();
            int exclamation = name.lastIndexOf("!");
            if (exclamation != -1) {
                mapping.setName(name.substring(0, exclamation));

                mapping.setMethod(name.substring(exclamation + 1));
            }
        }
        return mapping;
    }


查了下就是这个地方, 新版本的allowDynamicMethodCalls默认为false, 而2.3.4版本的为true

所以, 在struts配置文件加上<constant name="struts.enable.DynamicMethodInvocation" value="true"/>,测试通过。给碰到同样问题的同学留个参照。


备注: http://archive.apache.org/dist/struts/   官网资源下载地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值