安全的软件开发生命周期

原文地址:安全的软件开发生命周期
博客地址:blog.720ui.com/web

需求

安全需求分析

风险评估要基于系统中的信息的价值、业务功能的价值、系统的潜在威胁、恶意攻击的可能性、系统的故障和被成功攻击的后果等状况进行评估。数据库

关键目标识别

咱们须要从安全角度进行系统的考虑,它是一个安全的软件开发生命周期过程当中的一部分。编程

阅读:安全

设计

威胁模型

威胁建模是一个工程技术,能够帮助咱们识别到系统中存在的相关威胁和漏洞,并帮助咱们肯定安全目标和肯定相关的对策进行防范。服务器

后面有时间,我会针对威胁建模进行大体的讲解。微信

开发

静态代码分析

静态代码分析的好处在于,测试能够彻底自动化,使开发人员可以实现安全的编码实践,并在系统发布前,检查并修复存在风险的安全问题。网络

静态代码分析工具能够帮助开发人员快速查找和防止 SQL 注入、跨站脚本(XSS),跨站请求伪造(CSRF)和其余恶意攻击。工具

例如,Sonar (SonarQube)就是一个很好的工具。Sonar 是一个用于代码质量管理平台,管理源代码的质量。Sonar 不仅是一个质量数据报告工具,更是代码质量管理平台。支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。性能

开发安全规范

网络安全

咱们常常遇到 Web 攻击 和网络安全性问题。测试

阅读:

数据传输安全

当机密或敏感的数据在用户与 Web 服务器之间传递,可能存在数据的安全性问题。

阅读:

数据库安全

使用最小权限原则来访问数据库对象,例如表、视图、存储过程等。我举个实际的场景,若是我须要只读访问一个特定的数据库表,所以,数据库权限应该相应设置,而不是将我授予超级管理员权限。

此外,还须要注意数据库中机密或敏感数据的安全性,必要时候可使用加密技术进行存储,例如针对密码采起MD5基础上的盐值加密。

代码审查

代码审查是计算机源代码的检查。它的目的是发如今最初的开发阶段忽略的错误,提升软件的总体质量。代码审查能够经过交叉编程,非正式的沟通,和正式检查。

阅读:

测试

安全测试

安全测试是在相同测试环境和预生产环境进行全面测试,尽量模拟相应的生产环境。这包括硬件,软件,系统配置,控制和任何其余硬件。

在测试过程当中,包括回归测试,必须证实全部的安全控制已经适当应用,正确实现,而且工做正常,消灭所预期的威胁和漏洞。

测试过程当中还必须包括漏洞测试,并把该系统投入使用以前表现出严重漏洞的修复。

部署

安全评估

安全评估是每一家公司软件开发生命周期的重要组成部分。专家组对系统进行安全评估,分析安全问题,提供评估报告。

这个部分咱们常常忽略,以前我参与的一个产品对安全性要求很高,还进行了多轮安全评估。

总结

咱们来回顾下,上面讲到的内容。

  • 需求阶段,咱们重点要进行安全需求分析和关键目标识别。
  • 设计阶段,咱们能够采起威胁建模的方式,帮助咱们肯定安全目标和肯定相关的对策进行防范。
  • 开发阶段,咱们采起静态代码分析、开发安全规范的方式,在系统发布前,检查并修复存在风险的安全问题。
  • 测试阶段,不只要进行功能测试、性能测试,还要考虑安全测试,消灭所预期的威胁和漏洞。
  • 部署阶段,还须要安全评估。

(完)

更多精彩文章,尽在「服务端思惟」微信公众号!

相关文章
相关标签/搜索