一、背景
公司上市不到两周,便遭受到了黑客攻击,其中笔者团队的验证码比较容易识别,攻击者通过ORC识别刷了10几万的短信,除了造成一笔资金开销外,也给服务器带来了很大的压力;
并且在阿里云的控制台当中每天都能看到很多攻击信息,却没有拦截,原因是没有购买WAF防火墙,售后也频繁催促购买其安全设施;所以技术负负责人也开始重视起安全问题来,笔者因为懂一些安全技术,所以老大希望笔者在这方面做一些规划指导,周末花了点时间根据公司的现状做了一下规划设想,下文便是当时的口述汇报,后来整理成了文字版,给读者做一些参考吧。
二、安全制度
大多数人可能想到安全是从安全技术上来解决,实际上安全问题不仅仅靠的是技术层面,更多的是从制度上去解决的;
2.1 安全工程化
这里提一下SDL,SDL是英文字母的缩写,中文名称是安全开发生命周期,他是一套安全的生成流程。最开始来自于微软,在微软2004年以前windows系统和office中存在大量安全漏洞,为了解决这些问题提出了SDL,当使用了SDL之后office、windows的安全漏洞大量降低,后来被各个厂商推广。
SDL从 安全培训-》需求分析-》设计-》实施-》安全验证-》发布-》响应 这7个方面入手,每一个环节有相应的安全标准,不过微软标准版的SDL推广并不是很顺利,原因很多,但标准版SDL比较繁重是一个重要的因素,因此各家都有自己的一套SDL标准,在这方面我们也可以进行一些借鉴,制定一套自己的SDL标准,这个标准的制定一定要符合可执行可落地来为依据,可以参考我下面的落地实施部分。
2.2 对外沟通
2016年前以前,白帽子发现漏洞在乌云网报告,乌云网通知到各个公司,2016年7月之后乌云网关闭,一批白帽子被抓,导致白帽子发现漏洞不敢报告;不过后来各家开始组建自己的漏洞报告平台,2017年6月安全法出来之后,大部分公司要合规,因此大一些的公司通常都有自己的安全团队,比如教育行业好未来的应急响应中心;现在大家发现漏洞通常会报告给对应的平台的SRC;
比如教育行业的好未来SRC:http://src.100tal.com/
瓜子二手车的SRC:https://security.guazi.com/
以及更多的SRC平台,如下图
2.3 安全落地
上面提到了安全工程化,不过SDL的标准对于我们现阶段太过于理想,所以需要针对实际情况制定一些可落地的方案
1.安全编程规范
将一些可能带来安全风险的操作写入规范当中去,比如参数的输入输出,服务器的安全配置,以及代码的安全发布流程等。
2.安全培训
很多时候开发者并不重视安全,又或许对安全缺乏了解,比如系统中有哪些安全漏洞,漏洞的危害和原理是什么样的,怎么去防止这些漏洞等等,大部分开发者的安全意识还是很弱,和互联网技术不重视安全也有关系,可能一些开发者知道一些SQL注入、XSS,但是一深入去问一下,就不知所以然,而开发者对安全起了至关重要的作用,所以很有必要对开发者进行安全意识和安全基础技术的培训,这样才能从源头解决安全问题。
3.代码审计
这个不管是对于安全的角度还是对于减少BUG的角度都是很有必要的一个环节,对每个项目设定一个代码审计人员,可以对此这些审计人员组织一次代码审计指导;
4.安全测试
目前我们项目上线做了充足的功能测试,但是安全测试相对偏少,或者说并不全面,可以专门针对测试的人进行一些安全工具的测试的指导。
三、新书推荐
如果对笔者的实战文章较为感兴趣,可以关注笔者新书《PHP Web安全开发实战》,现已在各大平台上架销售,封面如下图所示