最近struts2暴安全漏洞,产品紧急升级。记录下升级过程。
1:首先修改pom.xml中struts2及其插件的版本,全部改成2.3.15。以前产品依赖于com.opensymphony.xwork-core.2.0.6,现在xwork-core移到struts2的包下了,而且版本也和struts2的版本保持一致。因此直接移掉了对xwork-core的依赖,交给struts2传递依赖吧。
2:RegexFieldValidator这个struts验证器的参数变了,需要将原先的expression换成regx。
3:原先的ActionContextCleanUp和FilterDispatcher过滤器被新的StrutsPrepareAndExecuteFilter替代了,现在只需要在web.xml中配置这一个过滤器就行了,配置方式和FilterDispatcher一样。
4:如果使用了sitemesh,在其装饰文件中使用了诸如<s:head
/>的struts2标签,则需要使用strutsPrepareFilter和strutsExecuteFilter两个过滤器来替代StrutsPrepareAndExecuteFilter,过滤的顺序为:strutsPrepareFilter 》sitemeshFilter
》strutsExecuteFilter。
5:针对新的StrutsPrepareAndExecuteFilter、strutsPrepareFilter和strutsExecuteFilter,需要对以前的产品扩展做适配。适配方式较简单,在init中创建一个适配的FilterConfig,然后通过它进行产品扩展。