zoukankan      html  css  js  c++  java
  • 安全开发流程(SDL)学习概述

    1.简介

    SDL的全称是Security Development Lifecycle,即:安全开发生命周期。由微软最早提出,是一种专注于软件开发的安全保障流程。为实现保护最终用户为目标,它在软件开发流程的各个阶段引入安全和隐私问题。

    2.流程

    SDL大致如下,包括了以下七个阶段:

    • 安全培训:安全培训体系:安全意识+安全测试+安全开发+安全运维+安全产品
    • 需求分析:确定安全需求和投入占比,寻找安全嵌入的最优方式
    • 系统设计:确定设计要求,分析攻击面,威胁建模
    • 实现:使用标准的工具,弃用不安全的函数,静态分析(安全开发规范+代码审计)
    • 验证:黑白盒测试,攻击面评估
    • 发布:安全事件响应计划、周期性安全评估
    • 响应:应急响应,BUG跟踪

    培训的内容应包括以下方面:
    Part 1:安全设计:包括减小攻击面、深度防御、最小权限原则、服务器安全配置等
    Part 2:威胁建模:概述、设计意义、基于威胁建模的编码约束
    Part 3:安全编码:缓冲区溢出(针对C/C++)、整数算法错误(针对C/C++)、XSS/CSRF(对于Web类应用)、SQL注入(对于Web类应用)、弱加密
    Part 4:安全测试:安全测试和黑盒测试的区别、风险评估、安全测试方法(代码审计、fuzz等)
    Part 5:隐私与敏感数据:敏感数据类型、风险评估、隐私开发和测试的最佳实践
    Part 6:高级概念:高级安全概念、可信用户界面设计、安全漏洞细节、自定义威胁缓解 

    3.SDL实战经验

    • 与项目经理进行充分沟通,排出足够的时间
    • 规范公司的立项流程,确保所有项目都能通知到安全团队,避免遗漏
    • 树立安全部门的权威,项目必须由安全部门审核完成后才能发布
    • 将技术方案写入开发、测试的工作手册中
    • 给工程师培训安全方案
    • 记录所有的安全bug,激励程序员编写安全的编码

    4.需求分析与设计

    引用一份之前看到的美的执行SDL的checklist。如下:

    5.开发与测试

    • 使用安全的函数,比如 OWASP ESAPI
    • 代码审计工具--Fortify SCA
    • 测试阶段--漏洞扫描器 appscan,awvs,webinspect

    攻防驱动SDL:

    事前基线:安全编码标准、安全设计
    事中措施:代码审计、发布前的安全测试、系统上线流程规范
    事后机制:http全流量ids、web日志分析、流量实时审计等
    事件驱动:发现了新问题就督促开发部门赶紧修复

     

    6.总结:

    听了很多安全同仁的想法,中小企业不建议推动SDL,可以做攻防驱动类型的SDL,因为SDL往往需要从上往下推动,归根到底还是“人”的问题。SDL的成功实施,与管理层支持力度有很多关系。

     

     参考文献:

    《白帽子讲Web安全》

     https://mp.weixin.qq.com/s/MR3SmOLj834LK4RBMcZ2pg?

     https://xz.aliyun.com/t/226

  • 相关阅读:
    .NET框架设计—常被忽视的C#设计技巧
    判断网络是否链接
    ADO.NET入门教程(五) 细说数据库连接池
    爬虫selenium中截图
    爬虫极滑块验证思路
    Linux 磁盘分区、挂载
    linux中crontab任务调度
    第30课 操作符重载的概念
    第29课 类中的函数重载
    第28课 友元的尴尬能力
  • 原文地址:https://www.cnblogs.com/whoami101/p/9914862.html
Copyright © 2011-2022 走看看