Struts2 2.3.15.1版本对参数处理存在问题

    前一段时间struts2爆出严重漏洞,因此需要将项目中struts2由2.3.1升级到2.3.15.1官方最新版本。在升级完成之后,发现原先运行正常的功能出问题了,页面向后台传递的部分参数丢失。通过跟踪struts2发现,负责处理页面参数ParametersInterceptor中默认参数过滤规则与2.3.1版本存在很大差异。

2.3.15.1版本: \w+((\.\w+)|(\[\d+\])|(\(\d+\))|(\['\w+'\])|(\('\w+'\)))*
2.3.1版本: [a-zA-Z0-9\\.\\]\\[\\(\\)_'\\s]+

因此像 map[user.id].value=1 这种格式的参数就会被过滤掉。为了解决这个问题,在params拦截器中,增加acceptParamNames参数,代码如下:

<interceptor-ref name="params">
    <param name="excludeParams">dojo\..*,^struts\..*</param>
    <param name="acceptParamNames">\w+((\.\w+)|(\[\d+\])|(\(\d+\))|(\['[a-z0-9A-Z_.]+'\])|(\('\w+'\)))*</param>
</interceptor-ref>

将原先倒数第二个\w+改为[a-z0-9A-Z_.]+,允许出现“.”符号,问题就解决了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值