首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2013-08-06 
Struts2 2.3.15.1版本对参数处理存在问题??? 前一段时间struts2爆出严重漏洞,因此需要将项目中struts2由2.

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_.]+,允许出现“.”符号,问题就解决了。

热点排行