OWASP安全编码规范详情
10页1、OWASPOWASP 安全编码规范详情安全编码规范详情0x00 原则 概览开发安全的软件需要对安全原则有基本的了解。虽然对于安全原则的全面评估超出了本指南的范围,但是我们还是提供了一个快速的概览。软件安全的目标是要维护信息资源的 保密性 , 完整性 ,和 可用性 ,以确保业务的成功运作。该目标通过实施 安全控制 来实现。本指南重点介绍具体的技术控制,以 缓解 常见软件 漏洞 的发生。虽然主要的关注点是 Web 应用程序及其配套的基础设施,但是本指南的大部分内容可应用于任意软件部署平台。为了保护业务免受来自与软件相关的不能接受的风险,了解风险的意义是很有帮助的。风险是一组威胁业务成功因素的集合。它可以被定义为:一个 威胁代理 与一个可能含有 漏洞 的 系统 交互,该漏洞可被 利用 并造成 影响 。虽然这可能看起来象是一个抽象的概念,但可以这样想象它:一个汽车盗窃犯(威胁代理)来到一个停车场(系统)寻找没有锁车门(漏洞)的车,当找到一个时,他们打开门(利用)并拿走里面任何的东西(影响)。所有这些因素在安全软件开发时都扮演了一个角色。开发团队采用的方法和攻击者攻击应用程序所采用的方法之间有一
2、个根本区别。开发团队通常采用的方法是基于应用程序的目的行为。换句话说,开发团队根据功能需求文档和用例设计一个应用程序以执行特定的任务。而另一方面,攻击者,基于“没有具体说明应拒绝的行为,则被认为是可行的”原则,对于应用程序可以做什么更感兴趣。为了解决这个问题,一些额外的元素需要被集成到软件生命周期的早期阶段。这些新元素是 安全需求 和 滥用实例 。本指南旨在帮助明确高等级的安全需求,并解决许多常见的滥用情况。Web 开发团队应当明白,基于客户端的输入验证、隐藏字段和界面控件(例如,下拉键和单选按钮)的客户端控制,所带来的安全性收益是有限的,这一点非常重要。攻击者可以使用工具,比如:客户端的 Web 代理(例如,OWASP WebScarab,Burp)或网络数据包捕获工具(例如,Wireshark),进行应用程序流量分析,提交定制的请求,并绕过所有的接口。另外,Flash,JavaApplet 和其它客户端对象可以被反编译并进行漏洞分析。软件的安全漏洞可以在软件开发生命周期的任何阶段被引入,包括: 最初没有明确的安全需求; 创建有逻辑错误的概念设计; 使用糟糕的编码规范,从而带来了技术
3、漏洞; 软件部署不当; 在维护或者更新过程中引入缺陷。此外,还有重要的一点需要明白,软件漏洞可以超出软件本身的范围。根据不同的软件、漏洞和配套基础设施的性质,一次成功的攻击会影响下面任何或者所有的方面: 软件和其相关的信息; 相关服务器的操作系统; 后端数据库; 在共享环境中的其它应用程序; 用户的系统; 与用户交互的其它软件。0x010x01 输入验证输入验证 在可信系统(比如:服务器)上执行所有的数据验证。 识别所有的数据源,并将其分为可信的和不可信的。验证所有来自不可信数据源(比如:数据库,文件流,等)的数据。 应当为应用程序应提供一个集中的输入验证规则。 为所有输入明确恰当的字符集,比如:UTF-8。 在输入验证前,将数据按照常用字符进行编码( 规范化 )。 丢弃任何没有通过输入验证的数据。 确定系统是否支持 UTF-8 扩展字符集,如果支持,在 UTF-8 解码完成以后进行输入验证。 在处理以前,验证所有来自客户端的数据,包括:所有参数、URL、HTTP 头信息(比如:cookie 名字和数据值)。确定包括了来自 JavaScript、Flash 或其他嵌入代码的 post
4、back 信息。 验证在请求和响应的报头信息中只含有 ASCII 字符。 核实来自重定向输入的数据(一个攻击者可能向重定向的目标直接提交恶意代码,从而避开应用程序逻辑以及在重定向前执行的任何验证)。 验证正确的数据类型。 验证数据范围。 验证数据长度。 尽可能采用“白名单”形式,验证所有的输入。 如果任何潜在的 危险字符 必须被作为输入,请确保您执行了额外的控制,比如:输出编码、特定的安全 API、以及在应用程序中使用的原因。部分常见的危险字符包括: “ % ( ) & + “ 。 如果您使用的标准验证规则无法验证下面的输入,那么它们需要被单独验证:o 验证空字节 (%00);o 验证换行符 (%0d, %0a, r, n);o 验证路径替代字符“点-点-斜杠”(/或 )。如果支持 UTF-8 扩展字符集编码,验证替代字符: %c0%ae%c0%ae/ (使用 规范化 验证双编码或其他类型的编码攻击)。0x020x02 输出编码输出编码 在可信系统(比如:服务器)上执行所有的编码。 为每一种输出编码方法采用一个标准的、已通过测试的规则。 通过语义输出编码方式,对所有返回到客户端的来自于
《OWASP安全编码规范详情》由会员m****分享,可在线阅读,更多相关《OWASP安全编码规范详情》请在金锄头文库上搜索。
DB2发生死锁情况时应该怎么处理
Python 为何能成最强编程语言
面试前必须要知道的Redis面试
MySQL下自动删除指定时间以前的记录的操作方法
深入理解FastCGI协议以及在PHP中的实现
MySQL数据库性能优化之硬件瓶颈分析
NoSQL数据库大全收集整理
2018 – 2019 年前端 JavaScript 面试题
PHP文件包含漏洞的形式总结
5种使用Python代码轻松实现数据可视化的方法
改进JavaScript和Bust的互操作性:深入认识wasm-bindgen组件
C#图片缩放平移从功能分析到编码实现
详解网络蜘蛛的安全隐患及预防方法
利用NAP解除安全隐患自动隐藏你的IP地址
解决分布式数据库和离线网络中原子性问题的新方法
bbed恢复数据遇到延迟块清除的问题
Oracle Data Redaction数据加密
linux下du和df结果不一致的原因及处理
基于QMP实现对qemu虚拟机进行交互
解读Java并发队列BlockingQueue
2024-01-15 24页
2024-01-15 15页
2024-01-08 89页
2024-01-08 72页
2023-08-31 3页
2023-08-31 2页
2023-07-10 3页
2023-07-10 3页
2023-07-10 3页
2023-07-10 2页