因为近期负责的几个银行系统软件,需要交付客户,因此客户专门请了安全公司对系统进行了安全评测,结果发现了诸如跨站执行脚本,远程执行漏洞以及弱口令等问题。
下面记录下本次解决的过程以便后续
1、首先从最简单的开始处理,服务器的弱口令问题,首先根据安全工具提供的测试描述中发现应用服务器中存在一个匿名用户,默认是不需要密码的,经过分析发现服务器使用了FTP协议,
而使用ftp协议默认会产生一个匿名用户,因此解决方案是删除该匿名用户。
2、再次就是解决跨站执行脚本的漏洞,首先在网上各种资料查找,彻底的了解了什么是跨站脚本漏洞以及产生的原因,也终于明白了为什么我们的项目会存在问题,主要是在JSP中存在直接将输入内容回显到页面中,并且未对输入内容做任何检查。
知道问题原因当然就开始修改了,鉴于对安全这块了解不深,自己写的过滤器也非常简单,仅能过滤一些情况还是会存在风险,因此在网上找了一个专门安全大拿写的针对java过滤xss的处理类(xss-html-filter-xss-html-filter-1.5)。有了这个利器
就开始将它融入到我们系统中了,因为目前系统已经处理交付阶段,不便于一个类一个类进行调整,因此预想统一使用了过滤器过滤输入内容。当然这里有遇到一些问题
因为HttpServletRequest类中没有提供重新设置paramter值的方法(项目中多使用getParamter获取参数),所以想到了使用装饰模式,即封装getParamter方法(其实getAttribute等一些方法也封装了;ps:只针对String类型处理),在返回值时过滤输入值,这里继承了httpservletrequestwrapper类,
然后再注册一个filter,经过验证确实达到了过滤输入字符串的目的。
3、最后解决的是远程漏洞执行,这个主要是因为项目本身使用了struts2,并且版本是比较低的2.3.4,网上很多都有描述低版本的存在风险,因此从官网下载了最新的2.3.24,然后就是各种替换jar包。
替换完后启动项目又发现报错,说需要使用新的filter,原来老的FilterDispatch已经建议不使用了,struts2建议使用新的StrutsPrepareAndExecuteFilter。配置上最新的filter类后启动没有问题呢,但是
有报错“There is no Action mapped for namespace[/] and action name [login] associated with context path [/login]”,解决此问题只需要通过在struts.xml根节点中添加如下节点<constant name="struts.enable.DynamicMethodInvocation" value="true"/><constant name="struts.convention.action.mapallmatches" value="true" />
分享到:
相关推荐
struts2.3.4源代码,不包含xwork源代码,官网下载的
struts2.3.4核心JAR包
Struts2.3.4API中文版
Struts2远程命令执行漏洞解析 漏洞解析 远程命令 Struts2
Struts2.3.4-all,将原来的包解压下来压缩为7z,所以文件小了一半
这是我做的struts2的API帮助文档。可以看我的博客是如何做的。 http://blog.csdn.net/long2010yu2010
本压缩文件是Struts帮助文档,欢迎下载!
2012年最新版本的Struts2.3.4帮助文档
Struts2.3.4 api chm 中文版
最新的Struts帮助文档 方便Struts的接口查询
这个帮助文档只有org.apache那部分,是我自己使用工具生成的帮助文档,当遗憾的是这个帮助文档并不完整,因为我只会生成apache那一部分,还有那个xwork-core那部分我不会,仅...但我保证这个绝对是struts2.3.4的帮助。
struts2.3.4包括源码、示例、libs,一站全齐
最新 struts2.3.4 API chm 文档
struts-2.3.4-all.zip 笔记
最新版Struts API struts2.3.4.chm
struts2.3.4帮助文档 绝对好用
文档名字是"Struts2.3.4.chm
struts 2.3.4最新中文API
struts2.3.4 doc帮助文档 文档全,查看方便