问题及原因分析:
之前修复漏洞时,写了个过滤器配置在web.xml中,但是部署到服务器并重启后,重新扫描漏洞,还是没有解决对应问题。在确定了这种修复方案是切实可行之后分析,可能是配置的web.xml未生效,搜索网上对应问题及检查部署过程发现,部署完后应用目录WEB-INF下会新增很多文件,其中有个web_merged.xml文件(如下图)。
该文件包含了web.xml文件中的内容,不过是旧的配置文件的配置内容,可以理解为是web.xml文件的缓存文件,且大部分时候,即使重新部署了web.xml文件后,项目实际使用的还是这个web_merged.xml文件的配置内容。
解决方案:
找到了问题的原因之后一切就好办了,下面就是解决方案:
- 方案一
- 更新
web.xml
的同时,把改动也更新到web_merged.xml
- 把更新完的两个文件,复制到配置缓存目录下(
configcells<cell_name>applications<ear_name>deployments<app_name><war_name>WEB-INF
)。 - 最后,你需要重启一下WAS服务。
- 更新
- 方案二
使用WAS的web控制台进行更新web.xml文件(登陆控制台,选择程序后点击“更新”,选择“替换或添加单个文件 ”,然后参考下图)。
WAS会自动把更改同步到web_merged.xml以及缓存目录下。(相当于WAS帮你进行了方法一的操作)
使用这个方法,你甚至都不需要重启WAS,也不需要重启应用。
最后,在解决了该文件的缓存问题使用了最新的web.xml配置之后,漏洞问题也彻底解决了。