SDL 实战经验

在实施SDL中的准则

April 12, 2017 - 1 minute read -
web security

注:原文来自《白帽子讲Web安全》

1. 与项目经理进行充分的沟通,排除足够的时间。

明确在什么阶段安全工程师需要介入,需要多长时间完成安全工作,同时预留出多少时间给开发团队用以开发安全功能或者修复安全漏洞。

预留出必要的时间,对于项目的时间管理也具有积极意义。否则很容易出现项目快发布了,安全团队忽然说还没有实施安全检查的情况。这种情况只能导致两种结果:一是项目因为安全检查而延期发布,开发团队、测试团队的所有都一起重新做安全检查;二是项目顶着安全风险发布,之后再重新建个小项目专门修补安全问题,而在这段时间内产品只能处于”裸奔“状态。

2. 规范公司的立项流程,确保所有项目都能通知到安全团队,避免遗漏

如果根据以往发生的安全事件,回过头来看安全问题是如何产生的,则往往会发现这样一个现象:安全时间产生的原因并不复杂,但总是发生在大家疏忽的一些地方。

在实施SDL 的过程中,技术方案的好坏往往不是最关键的,最糟糕的事情是SDL 并没有覆盖到公司的全部项目,乃至一些边边角角的小项目发布后,安全团队都不知道,最后导致安全事件的发生。

3. 树立安全部门的权威,项目必须由安全部分审核完成后才能发布。

”项目必须由安全部分审核完成后才能发布“,这句话并非绝对,其背后的含义是为了树立安全部门的权威。

4. 将技术方案写入开发、测试的工作手册中。

与其时候通过代码审核的方式告知开发者代码存在漏洞,需要修补,倒不如直接将安全技术方案写入开发者的代码规范中。比如规定好哪些函数是要求禁用的,只能使用哪些函数;或者封装好一些安全功能,在代码规范中注明在什么情况下使用什么样的安全API。

对测试人员的要求是类似的。在测试的工作手册中,可以加入安全测试的方法,清楚地列出每一个测试用例,第一步、第二步做什么。这样一些基础的安全测试就可以交由测试人员完成,最后生成一份安全测试报告即可。

5. 给工程师培训安全方案。

培训最重要的作用是,在项目开发之前,能够使开发者知道如何写出安全的代码,从而节约开发成本。因为如果开发者未经培训,可能在代码审核阶段会被找出非常多的安全bug,修复每一个安全bug都将消耗额外的开发时间;同时开发者若不能理解这些安全问题,由安全工程师对每个问题进行解释与说明,也是一份额外的时间支出。

6. 记录所有的安全bug,激励程序员写安全的代码。

为了更好地推动项目组写出安全的代码,可以尝试给每个开发团队设立绩效。被发现漏洞最少的团队可以得到奖励,并将结构公布出来。