安全的软件开发生命周期

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

需求

安全需求分析

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

关键目标识别

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

阅读:

设计

威胁模型

威胁建模是一个工程技术,可以帮助我们识别到系统中存在的相关威胁和漏洞,并帮助我们确定安全目标和确定相关的对策进行防范。

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

开发

静态代码分析

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

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

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

开发安全规范

网络安全

我们经常遇到 Web 攻击 和网络安全性问题。

阅读:

数据传输安全

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

阅读:

数据库安全

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

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

代码审查

代码审查是计算机源代码的检查。它的目的是发现在最初的开发阶段忽略的错误,提高软件的整体质量。代码审查可以通过交叉编程,非正式的沟通,和正式检查。

阅读:

测试

安全测试

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

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

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

部署

安全评估

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

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

总结

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

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

(完)

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值