软件安全开发生命周期概述

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 校验全部的程序输入 保证所有变量在使用之前都经过严格的校验,防止被污染的
数据进入程序。 – 校验全部的输入长度
通过限制输入长度,可以有效的控制一些攻击使其不给系统 带来过大的威胁:
SQL Inject XSS File Include ………
Secure Coding Course, © 7Safe
由于JavaScript为客户端脚本,因此任何试图使用JavaScript对 用户数据进行校验的行为都可能被用户构造的本地脚本所绕过, 因此,所有校验工作应由服务端程序完成而不是客户端。
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
▪ 简介
安全开发周期,即Security Development Lifecycle (SDL),是微软提出的从安全角度指导软件开发过程的 管理模式。SDL不是一个空想的理论模型。它是微软为 了面对现实世界中安全挑战,在实践中的一步步发展 起来的软件开发模式。
典型的软件开发流程中,如瀑布模型,中心围绕着 产品功能,完全没有安全方面的考虑。这样的开发流 程可以造就功能上相对完善的软件,但是无法满足在 安全上的需要。由于软件开发过程中未进行任何有效 的安全控制措施,导致软件开发后由于其固有的安全 隐患所引起的安全事件频频发生,给黑客及恶意人员 可趁之机,由此导致的经济损失不可估量。
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
5
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
Secure Coding Course, © 7Safe
15
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
– 使用安全、统一的编码或转义方式 创建并使用独立、统一的编码或转移方式,而且编码或转移
中,至少应包含对以下类别数据的编码或转移:
可能造成SQL注入的数据,如:分号、单引号等 可能造成XSS的数据,如:script、javascript等
Dan Haagman, InfoSecurity 2009
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
3
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
若程序需要记录额外的操作日志等信息,应保证这些日志中 的某些或全部内容不来自用户输入,否则用户可能通过外部恶 意提交信息的方式填充日志。
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
4
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
虽然目前企业和组织已经逐步意识到软件安全的 重要性,但是他们把目光更多的聚焦到了软件开发 后的漏洞扫描或渗透测试,尽管这个过程能够发现 和解决大多数的安全隐患,但是后期的安全评估和 安全整改,将带来更大的成本投入和人力投入;甚 至由于开发人员的流动导致许多安全漏洞无法得到 解决。据美国国家标准局(NIST)早年发表的一份 调查报告估计,更好的安全控制措施将为后期安全 整改的总体成本节省三分之一以上的费用,且有效 规避70%以上由于软件安全隐患所引发的安全事件。
– 设定有安全的权限边界 所有的程序都应清楚的了解到自己能做什么,而在其所能做
的范围之外,均属于其权限边界之外,应严格禁止对其权限之 外的任何操作。 – 校验被调用的后台命令
若程序需要调用后台可执行程序,则在调用时,应通过使用 完整路径或对程序进行HASH校验等方式保证程序的调用正确。
Secure Coding Course, © 7Safe
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
8
软件安全开发生命周期
▪ 简介 ▪ 安全需求分析 ▪ 安全设计 ▪ 安全编程 ▪ 安全测试 ▪ 安全部署及安全响应
Dan Haagman, InfoSecurity 2009
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
13
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
– 校验全部的输入类型 不同的程序所接收到的参数类型应严格区分并校验,对于非法的类
型应有相关异常进行处理以防止其进入程序。 – 不使用任何方式验证失败的数据
18
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
▪ 安全测试
– 安全测试是什么?
在产品的生命周期中,特别是产品开发基本完成到发布阶段,对 产品进行检验以验证产品符合安全需求定义和产品质量标准的过 程。
– 安全测试目标
• 提升产品安全质量 • 尽量在发布前兆到安全问题予以修补降低成本 • 度量安全
当程序对某个数据校验失败时(如:校验数据类型),相关的异常 处理程序应抛弃该数据并中断操作,而不应对数据进行任何的修复尝 试。 – 对HTTP所有内容进行校验
除需对传统的HTTP GET、POST等数据进行严格校验外,还应对HTTP 内所有可能使用到的字段进行校验,防止字段中包含恶意字符而污染 程序,如:
输入校验,以此可带来:
统一的输入检测策略 统一的验证逻辑 统一的错误验证处理 降低升级和维护成本
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
12
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
Dan Haagman, InfoSecurity 2009
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
2
软件安全开发生命周期
▪ 简介 ▪ 安全需求分析 ▪ 安全设计 ▪ 安全编程 ▪ 安全测试 ▪ 安全部署及安全响应
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
9
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
▪ 安全设计
– 在安全设计阶段,特别加入以下两方面的考虑 减少攻击界面。例如,对一个网络软件的设 计,它需要监听那些网络端口,是否可以减 少监听端口的数目?那些用户可以与这些端 口建立连接,是否要加强身份验证? 深层防御。底层模块的设计中,假设上层模 块有可能出现安全漏洞。对传递的数据考虑 进一步校验
– 当前安全测试方法有
• 模式匹配方法,将程序看作字符串 • 状态机模型,将程序看作状态机 • 黑盒模型,将程序看作黑盒子 • 白盒模型,将程序看作路径的组合
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
10
软件安全开发生命周期
▪ 简介 ▪ 安全需求分析 ▪ 安全设计 ▪ 安全编程 ▪ 安全测试 ▪ 安全部署及安全响应
Dan Haagman, InfoSecurity 2009
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
7
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
▪ 安全需求分析——设定安全目标
– 在需求分析阶段,加入以下的安全考虑
产品提供的安全功能 产品如何安全的与用户(或其它软件模块)交互 特别的,安全方面的考虑对产品开发计划的影响 产品的风险评估和威胁模型(threat modeling) 产品的缺省功能配置
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
6
软件安全开发生命周期
▪ 简介 ▪ 安全需求分析 ▪ 安全设计 ▪ 安全编程 ▪ 安全测试 ▪ 安全部署及安全响应
Dan Haagman, InfoSecurity 2009
Secure Coding Course, © 7Safe
19
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
▪ 安全测试
– 当前安全测试的问题
• 覆盖性 • 完备性 • 可度量性
– 当前安全测试困难
• 测试理论很难适用于安全领域 • 安全测试基础理论薄弱,当前测试方法缺少理论指导,也缺乏技
Байду номын сангаас17
软件安全开发生命周期
▪ 简介 ▪ 安全需求分析 ▪ 安全设计 ▪ 安全编程 ▪ 安全测试 ▪ 安全部署及安全响应
Dan Haagman, InfoSecurity 2009
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
Referer Host Cookie ……
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
14
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
16
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
– 校验被调用的文本或配置文件 若程序需要调用后台文本或配置文件,则在调用前,应相对
文件或配置文件的完整性和有效性进行检查,以确保读入的文 本或配置文件是正确可用的。 – 确保程序所记录的日志可控
Dan Haagman, InfoSecurity 2009
软件安全开发生命周期
杭州安恒信息技术有限公司
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
1
目录
▪ 软件安全开发生命周期(SDL) ▪ 基于WEB应用程序的SDL
– 校验向用户输出的数据 当程序通过查询后台数据库或其他方式从后台获取数据后,
在将数据输出给用户前应对该数据进行校验,校验其中是否包 含有非法字符、可执行客户端脚本等恶意信息。 – 使用安全的SQL查询方式
在进行SQL查询时,必须使用安全的查询方式,如:Prepared Statement,以避免查询语句中由用户恶意插入SQL语句所带来的 风险。 – 禁止使用JavaScript进行任何校验
Secure Coding Course, © 7Safe
7Safe Company Overview 2009
2010/11/10 DBAppsecurtiy 2010
11
软件安全开发生命周期
Dan Haagman, InfoSecurity 2009
▪ 安全编程
– 独立、完整且集中的输入验证 创建并使用了独立的用户输入验证模块以完成对所有用户的
相关文档
最新文档