常见的软件开发问题
软件开发生命周期
安全软件的开发方法
DevOps & DevOpsSec
变更控制和配置管理
代码库的安全性
编程语言类型
数据库概念和安全问题
恶意软件类型和攻击
1.常见的软件开发问题
- 需求阶段没有过多的考虑安全性
- 由于时间限制导致对安全性的投入不足
- 软件开发相关人员经验不足
- 依赖于周边安全
- 实现和默认配置问题
2.软件开发生命周期
SLDC是通过可重复和可预测的流程来帮助确保功能、成本、质量、交付周期的需求
具体流程:
- 需求收集
- 安全需求 可用性、机密性、完整性
- 安全风险评估
- 隐私风险评估 P1、P2、P3
- 风险级别验收 减灾工作放在首位
- 软件需求模型:
信息模型 规定要处理的信息类型和处理方式
功能模型 概述应用程序需要执行的任务和功能
行为模型 解释在具体事务处理发生过程中和发生之后应用程序的状态
- 设计
让产品真正实现这些需求
- 攻击面分析 目的是识别和减少可以被不可信用户访问的代码和功能的数量
- 威胁建模 了解不同威胁如何实现、破坏如何成功进行的系统方法
- 开发
- 计算机辅助软件工程 CASE(Computer-Aided Software Engineering)
- 输入验证
- 详细审查
- 缓冲区溢出
- 静态分析 调试技术
- 测试
- 成熟的开发者会在编码之前,为模块开发单元测试,与编码同时进行,测试驱动开发
- 单元测试 确认数据机构、逻辑和边界条件
- 集成测试 验证组件石佛按设计规范中的概述协同工作
- 验收测试 确保代码满足客户的需求
- 回归测试 进行系统变更后重新测试,以确保功能性、性能和保护级别
- 安全测试 手动和自动测试
- 模糊测试 发送随机数据到目标程序从而出发故障的行为
- 动态分析
- beta测试 通用客户测试
- 验证 判断产品是否准确体现和满足产品规范 确认-判断产品是否为所针对的实际问题提供了必要的解决方案
- 发布 将产品投入生产环境
- 维护 最终安全审核
项目管理使计划顺利进展,并合理分配必须的资源,提供必需的领导,充分考虑可能遇到的各种情况
- 安全计划
- 文档-RFC文档、IEEE标准和最佳实践
- 工作声明(Statement of Work,SOW)
- 工作分解结构(Work Breaddown Structure,WBS)
2.安全软件开发最佳实践
- OWASP https://owasp.org/www-project-top-ten/
- DHS(BSI) 软件保障计划
3.软件开发模型
-
边做边改模型
-
瀑布模型
-
V形模型