没有合适的资源?快使用搜索试试~ 我知道了~
首页OWASP安全编码规范快速参考指南
资源详情
资源评论
资源推荐

2012 年 6 月
Version 2.0 1
OWASP 安全编码规范
快速参考指南
版权与许可证
版权所有:2010年OWASP基金会©
本文档的发布基于 Creative Commons Attribution ShareAlike3.0 license。任何重复使用或发行,
都必须向他人澄清该文档的许可条款。http://creativecommons.org/licenses/by-sa/3.0/
中文版本团队成员
王颉 何勇亮 林恒辉
(因水平有限,欢迎大家指出存在的翻译错误。在以后的版本中,我们将修正指出的错误。OWASP中国项
目组:http://www.owasp.org.cn
)

2012 年 6 月
Version 2.0 2
目录
序言 ............................................................................................................................. 3
软件安全和威胁原则的概览 ...................................................................................... 4
输入验证: .............................................................................................................. 5
输出编码: .............................................................................................................. 5
身份验证和密码管理: .......................................................................................... 6
会话管理: .............................................................................................................. 7
访问控制: .............................................................................................................. 7
加密的实践: .......................................................................................................... 8
错误处理和日志管理: .......................................................................................... 9
数据保护: .............................................................................................................. 9
通讯安全: ............................................................................................................ 10
系统配置: ............................................................................................................ 10
数据库安全: ........................................................................................................ 11
文件管理: ............................................................................................................ 11
内存管理: ............................................................................................................ 11
通用编码实践: .................................................................................................... 12
附录 A: ...................................................................................................................... 13
外部的参考资料: ................................................................................................ 13
附录 B: 术语表 ......................................................................................................... 14

2012 年 6 月
Version 2.0 3
序言
这项与技术无关的文档以清单列表的形式,定义了一套可以集成到软件开发生命周期中的常
见软件安全编码规范。采用这些规范将减少最为常见的软件漏洞。
一般来说,开发安全的软件要比在软件包完成以后再纠正安全事件的成本低很多,且还没涉
及到因为安全问题而造成的损失。
保护关键软件资源的安全性,比以往任何时候都更为重要,因为攻击者的重点已逐步转向了
应用层。2009 年 SANS 的研究
1
表明,对于 Web 应用程序的攻击已占据了在互联网上观察
到全部攻击数量的 60%以上。
在使用本指南时,开发团队应该从评估他们的安全软件开发生命周期成熟度和开发人员知识
水平着手。由于本指南没有提供如何实现每个编码规范的具体细节,因此,开发人员需要了
解相关知识,或有可以提供必要指导的足够可用资源。本指南可以在开发人员不具备深入了
解安全漏洞的情况下,将提供的编码规范转换成编码要求。但是,开发团队的其他成员应该
有责任,通过提供适当的培训、工具和资源,以验证整个系统的设计和开发是安全的。
本文档中使用的重要术语都以
斜体字
标注,并列举在附录 B 的术语列表中。
关于一个安全软件开发框架的指南不属于本文讨论的范围。但是,我们推荐以下额外的常用规范和
资源:
• 明确定义角色和职责。
• 为开发团队提供足够的软件安全培训。
• 采用一个安全软件开发生命周期。
o OWASP CLASP 项目
• 建立安全编码标准。
o OWASP 开发指南项目
• 建立一个可重复使用的对象库文件。
o OWASP Enterprise Security API (ESAPI) 项目
• 确定安全控制的有效性。
o OWASP Application Security Verification Standard (ASVS) 项目
• 建立外包开发安全规范,其中包括了定义安全需求,和有关提案申请(RFP)与合同的确认
方法。
o OWASP Legal 项目

2012 年 6 月
Version 2.0 4
软件安全与威胁原则概览
开发安全的软件需要对安全原则有一个基本的了解。虽然对于安全原则的全面审核超出了本指南的
范围,但是我们还是提供了一个快速的概览。
为了确保成功的业务操作,软件安全的目标是要维护信息资源的
保密性
,
完整性
,和
可用性
。该目
标通过实施
安全控制
来实现。本指南重点介绍具体的技术控制,以
缓解
常见软件
漏洞
的发生。虽然
主要的焦点是 Web 应用程序及其配套的基础设施,但是指南的大部分内容可应用于任意部署软件的
平台。
为了保护业务免受来自与软件可靠度相关的不能接受的风险,了解风险的意义是很有帮助的。风险
是一组威胁业务成功因素的集合。它可以被定义为:一个
威胁代理
与一个可能含有
漏洞
的
系统
交
互,该漏洞可被
利用
并造成
影响
。虽然这可能看起来象是一个抽象的概念,但可以这样想象它:一
个汽车盗窃犯(威胁代理)来到一个停车场(系统)寻找没有锁车门(漏洞)的车,当找到一个
时,他们打开门(利用)并拿走里面任何的东西(影响)。所有这些因素在安全软件开发时都扮演
了一个角色。
开发团队采用的方法和攻击者攻击应用程序所采用的方法之间有一个根本区别。开发团队通常采用
的方法是基于应用程序的目的行为。换句话说,开发团队根据功能需求文档和用例设计一个应用程
序以执行特定的任务。而另一方面,攻击者,基于“没有具体说明应拒绝的行为,则被认为是可行
的”原则,对于应用程序可以做什么更感兴趣。为了解决这个问题,一些额外的元素需要被集成到
软件生命周期的早期阶段。这些新元素是
安全需求
和
滥用实例
。本指南旨在帮助确定高等级的安全
需求,并解决许多常见的滥用情况。
网站开发团队应当明白,基于客户端的控制,比如:输入验证、隐藏字段和界面控件(例如,下拉
键和单选按钮),对于安全性是没有什么太大贡献的,这一点非常重要。攻击者可以使用工具,比
如:客户端的 Web 代理(例如,OWASP WebScarab,Burp)或网络数据包捕获工具(例如,
Wireshark),进行应用程序流量分析,提交定制的请求,并绕过所有的接口。另外,Flash,Java
Applet 和其他客户端对象可以被反编译并进行漏洞分析。
软件的安全漏洞可以在软件开发生命周期的任何阶段涉及到,包括:
• 没有预先确定安全需求。
• 创建有逻辑错误的概念设计。
• 使用糟糕的编码规范,从而带来了技术漏洞。
• 部署软件不当。
• 在维护或者更新过程中带来缺陷。
此外,还有重要的一点需要明白,软件漏洞可以超出软件本身的范围。根据不同的软件、漏洞和配
套基础设施的性质,通过利用下列任何或者所有的选项都会造成一次成功的攻击影响:
• 软件和其相关的信息。
• 相关服务器的操作系统。
• 后端数据库。
• 在共享环境中的其他应用程序。
• 用户的系统。
• 与用户交互的其他软件。
剩余15页未读,继续阅读














安全验证
文档复制为VIP权益,开通VIP直接复制

评论2