作为一个对安全一知半解的菜鸡,之前以为渗透测试和代码审计没有什么区别,都是安全测试,还要分的这么详细.....偶然听过一节课后,我对于这两者有了明确的认知,以下是对于渗透测试以及代码审计的一些总结,如有不足还请大佬指点指点。
- 渗透测试
- 渗透测试的目标是一个黑盒子,我们并不关心软件产品内部的代码结构,我们只通过对这个网站发起一些参数提交(POC恶意参数),来达到我们利用某个漏洞挖掘出的一些攻击效果(黑盒测试)
- 代码审计(主审PHP、java源代码)
- 目标:直接拿到网站的源代码进行漏洞挖掘,也称为白盒测试
- 代码审计是指有一定安全经验的相关人员,通过阅读开发文档或者网站源代码,以自动化分析工具或者人工分析手段,对应用程序进行深入分析,高效全面的发现系统代码的编码缺陷、以及开发人员不安全不规范的编程习惯,并指导开发人员进行修复,保障应用系统的安全运行
- 工作过程:
- 1、需要掌握代码审计的知识点以及掌握代码审计工具
- 2、采用自动化工具+人工的方式
- 3、找到有漏洞的代码
- 4、最终给出修复方案,并指导开发人员完善相应的应用系统
- 分类:自动化工具的代码审计、人工分析的代码审计
- 渗透测试和代码审计的关系
- 渗透测试:能够相对于发现操作系统和网络服务综合性的安全,因为渗透测试是在已经成熟的网络环境中去操作。(网络架构,后台服务器等)
- 代码审计:更多的是一个静态的代码审计,白盒测试则是彻底地发现代码的风险
- ps:因为目前的安全事态越来越严重,未来的开发一定要注重安全,代码审计必定要在未来的开发中普及。我们可以购买使用相关的网络安全产品(防火墙、waf、ids等)来进行防护,但是硬件设备只能防止80%的漏洞,往往出现漏洞的就是剩下的20%
- 两者的关系
- 相互补充,相互强化(黑盒测试通过外层进行嗅探挖掘,白盒测试从内部充分发现源代码中的漏洞风险)
- 代码审计发现问题,渗透测试确定漏洞的可利用性
- 渗透测试发现问题,代码审计确定成因
- 代码审计的成效
- 更彻底、更全面
- 提高代码的安全质量
- 降低攻击成本
- 软件业务各阶段的修复成本
- 软件开发需求/架构:
- 开发初期,架构设计(业务设计+操作系统+中间件(tomcat、jboss等)+数据库+ssh/ssm)过程中就要考虑安全员参与设计
- 编码开发:
- 软件业务是由一个团队分工完成的(前端、后端分别来完成),更有一些小业务是自行开发,在这个过程中需要每个部门或者每个业务链能够保障自己业务的安全
- 集成/组件测试:
- 是一个很大的业务系统,比如业务查询、支付、统计等,将这些业务线集成起来,需注重集成的过程中分配相关的权限、业务流等是否存在问题(最好是在集成的各阶段都考虑到安全)
- 系统/验收测试:
- 系统上线过程中,不仅要对产品本身做测试,还要对安全做渗透(代码审计或者渗透测试),但是成本比较高,因为各部门调度成本(参与的人员众多,成本很高)
- 产品发布:
- 如果被黑客利用,成本将无法估计,风险非常高
- 软件开发需求/架构: