Web应用安全检测有哪些手段?

静态代码扫描(Fortify SCA、Find Bugs),这块主要提供给开发,安全问题不是测试出来的,是开发出来的,在开发的过程中就已经将这个雷埋进去了,测试的时候只能去一个个排雷。更多是我们在开发阶段就不要去埋雷。


如何不埋雷呢?可能很多时候我们都不知道自己埋了一个雷,因为开发经验和开发阅历不够,这时候还是回归到我们刚才的话题,我们可以利用工具,直接把Fortify SCA或Find Bugs工具集成到开发环境中。这些工具可以帮助我们去解决编码或知识储备不足这样的情况。


动态扫描分析,主要是有WebInspect、 AppScan这两款工具,也有一些开源的工具,但是开源的工具知识库维护的比较少,规则库也不太更新或更新的不及时。这块是我们安全测试人员必须要掌握的,不仅要掌握工具怎么用,更多的是,要将工具扫描出的结果解释给开发,这是怎么样的一个漏洞,怎么样可以修复,修复之后怎样去验证。


舆情监控(CVE),这个每个公司都逃不过,要么用开源组件,要么用厂商的中间件,要么用小的中间件,要么用小的数据库。


账户安全策略(密码初始化、密码找回、账户过期、密码过期、账户休眠)。


很多应用中都不会去考虑这些,顶多考虑一个密码找回。密码初始化是说我们后台新建的账户,当这个账户真正开始用的时候,必须初始化一下密码。


账户过期指的是,我的账户如果输错了多少次密码,必须让它过期或者冻结一段时间,防暴力破解密码。密码过期指的是,密码只能使用一段时间,比如说银行里的密码,可能只能使用一天,第二天就必须换密码。


最后一个就是账户休眠,比如说给高层领导分配了一个很高权限的帐号,但是他几乎不上这个系统,开发人员知道这个密码后,他就可以拿这个账户当后门一样用,这都是风险,所以要关注休眠账户,有没有异常登录,有没有休眠策略。


接下来还有拦截各种SQL注入,XSS跨站、网站挂马、篡改、拖库等黑客攻击,并做到实时更新防护策略,第一时间防御各种0day漏洞。这种0day漏洞跟CVE一样,也要做日程监控,因为一般黑客拿到这个漏洞,他是不会去公布的,除非厂商自己知道才会对外公布。有一个时间差,在这个时间差里,很多人已经遭受攻击了。


应对0day漏洞就需要在公司内部培养一个安全团队,去挖掘出来产品里有没有0day漏洞,也就是一个安全实验室。但是大部分公司没有能力去建立一个安全实验室,就可以借助百度、腾讯、阿里、360这些对外输出的公司,去做这块防护。


防数据伪造及数据投毒,为什么一个web应用安全要防数据呢?数据指的是用户输的各种数据,用户有可能输的是业务数据,但是如果不是普通的用户,有可能输的是经过精心伪造的数据,它跟病毒是一样的,可以做到指哪打哪。


数据投毒是我在数据里加入了一些可以帮我debug,或者帮我调试的内容,就可以在系统里面打出一个个的断点,通过系统的断点就可以判断系统走到哪一步,就可以绕过支付环节,或者绕过权限验证,绕过服务器之间的数据通信,直接到达另外一个节点。