应用系统安全开发技术规范VWord格式文档下载.docx
- 文档编号:13167892
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:60
- 大小:433.20KB
应用系统安全开发技术规范VWord格式文档下载.docx
《应用系统安全开发技术规范VWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《应用系统安全开发技术规范VWord格式文档下载.docx(60页珍藏版)》请在冰豆网上搜索。
陈志明
1.1
2015-11-30
1.2
2015-12-3
1.3
注:
更改人除形成初稿,以后每次修改在未批准确认前均需采用修订的方式进行修改。
目录
1 背景与目标 1
2 安全编程概念 1
2.1 安全编程 1
2.2 结构化编程 2
2.3 脆弱性 2
2.4 可信计算 2
2.5 安全可信模块 3
2.6 不可信任模块 3
2.7 敏感信息 3
2.8 特权 3
2.9 信息隐藏 3
2.10 中间件 3
2.11 死锁 4
2.12 可信边界 4
2.13 元字符 4
2.14 参数化查询 4
2.15 UNIXJAIL环境 4
2.16 临时文件 4
2.17 信息熵 5
2.18 SSL 5
2.19 TLS 5
2.20 HTTPS 5
2.21 Http会话 5
2.22 Cookie 6
2.23 HttpOnlyCookie 6
3 安全编程原则 6
3.1 统一的安全规范 6
3.2 模块划分 6
3.3 最小化功能 7
3.4 最小化特权 7
3.5 对多任务、多进程加以关注 7
3.6 界面输出最小化 7
3.7 使代码简单、最小化和易于修改 8
3.8 避免高危的服务、协议 8
3.9 数据和代码分离 8
3.10 关键数据传输保护 8
3.11 禁止赋予用户进程特权 8
3.12 使用适当的数据类型 9
3.13 使用经过验证的安全代码 9
3.14 使用应用中间件 9
3.15 设计错误、异常处理机制 9
3.16 提供备份机制 9
3.17 检查传递变量的合法性 9
3.18 检查所有函数返回代码 9
3.19 修改面向用户的操作的反馈缺省描述 9
3.20 文件操作的要求 10
3.21 其他编码原则 10
4 应用安全分析 11
4.1 安全需求 11
4.2 安全威胁 11
4.2.1 Web安全漏洞 11
4.2.2 拒绝服务攻击 12
4.2.3 嗅探攻击 12
4.2.4 中间人攻击 12
4.3 安全约束 13
5 安全编程要求 13
5.1 输入处理 13
5.1.1 建立可信边界 13
5.1.2 验证各种来源的输入 14
5.1.3 保证所有的输入信息是被验证过的 14
5.1.4 对输入内容进行规范化处理后再进行验证 15
5.1.5 选择合适的数据验证方式 15
5.1.6 防范元字符攻击 15
5.1.7 拒绝验证失败的数据 15
5.1.8 在服务端进行验证 15
5.1.9 建立统一的输入验证接口 16
5.1.10 控制写入日志的信息 16
5.1.11 从服务器端提取关键参数 16
5.2 输出处理 16
5.2.1 限制返回给客户的信息 16
5.2.2 建立错误信息保护机制 16
5.3 数据库访问 16
5.3.1 合理分配数据库访问权限 16
5.3.2 合理存放数据库连接帐号和密码信息 17
5.3.3 使用参数化请求方式 17
5.3.4 对SQL语句中来自于不可信区域的输入参数进行验证 18
5.3.5 对数据库操作的返回数据进行验证 18
5.3.6 分次提取数据 18
5.3.7 通过row(行)级别的访问控制来使用数据库 18
5.3.8 确保数据库资源被释放 18
5.4 文件操作 19
5.4.1 对上传文件进行限制 19
5.4.2 把文件名以及文件内容作为不可信的输入对待 19
5.4.3 安全的使用文件名 19
5.4.4 使用文件系统访问控制 19
5.4.5 注意文件访问竞争条件 19
5.4.6 安全使用临时文件 20
5.4.7 确保文件系统资源被释放 20
6 安全特征 20
6.1 关注应用的对象重用 20
6.2 用户访问控制信息的机密性 20
6.3 不要在客户端存放敏感数据 20
6.4 避免内存溢出 21
6.5 可配置数据保护 21
6.6 禁止在源代码中写入口令 21
6.7 随机数 21
6.8 使用可信的密码算法 22
6.9 异常管理 22
7 应用安全设计规范 23
7.1 应用安全规划 23
7.2 数据安全等级划分 23
7.3 数据库规划 23
7.3.1 用户权限 23
7.3.2 数据源设计 23
7.3.3 外部系统访问 23
7.4 角色划分 24
7.5 URL规划 24
7.6 程序文件目录规划 24
7.6.1 数据及程序分离 24
7.6.2 静态程序资源 24
7.6.3 程序文件分类 24
7.7 Cookie 24
7.8 文件安全 25
7.8.1 文件存储 25
7.8.2 文件操作 25
7.8.3 文件类型 25
7.9 第三方组件安全 25
7.9.1 组件兼容性 25
7.9.2 组件安全及成熟度 25
7.9.3 组件配置 25
7.10 WebService 25
7.11 RESTfulWebService 26
7.12 应用安全关注点 27
7.13 应用安全限制应对方案 29
7.13.1 外网隔离 29
7.13.2 外网文件操作 29
7.13.3 正向和反向隔离装置(国网系统) 29
8 应用安全开发规范 30
8.1 Java及Web安全编程规范 30
8.1.1 不信任未知 30
8.1.2 数据层开发 30
8.1.3 会话管理 32
8.1.4 Cookie 33
8.1.5 输入验证 33
8.1.6 输入文件名的验证 34
8.1.7 输出处理 34
8.1.8 敏感信息处理 36
8.1.9 异常信息处理 37
8.1.10 特殊页面跳转 37
8.1.11 文件操作 37
8.1.12 资源释放 38
8.1.13 内存控制 38
8.1.14 外部程序调用漏洞 38
8.1.15 整数溢出 39
8.2 C++安全编程规范 39
8.2.1 不信任未知 39
8.2.2 免缓存区溢出 40
8.2.3 免缓整数溢出 42
8.2.4 域名合法性检查 45
8.2.5 检查返回值 46
8.2.6 产生随机数 47
8.2.7 验证输入文件名 48
8.2.8 类设计注意事项 48
8.2.9 外部程序调用漏洞 50
8.2.10 临时文件处理 50
应用系统安全开发技术规范
1背景与目标
在Internet大众化及Web技术飞速演变的今天,Web安全所面临的挑战日益严峻。
黑客攻击技术越来越成熟和大众化,针对Web的攻击和破坏不断增长,Web安全风险达到了前所未有的高度。
许多程序员不知道如何开发安全的应用程序,开发出来的Web应用存在较多的安全漏洞,这些安全漏洞一旦被黑客利用将导致严重甚至是灾难性的后果。
这并非危言耸听,类似的网上事故举不胜举,公司的Web产品也曾多次遭黑客攻击,甚至有黑客利用公司Web产品的漏洞敲诈运营商,造成极其恶劣的影响。
本规范为解决Web应用系统安全问题,对主要的应用安全问题进行分析,并有针对性的从设计及开发规范、开发管理、安全组件框架、安全测试方面提供整体的安全解决方案。
使本组织能以标准的、规范的方式设计和编码。
通过建立编码规范,以使每个开发人员养成良好的编码风格和习惯;
并以此形成开发小组编码约定,提高程序的可靠性、可读性、可修改性、可维护性和一致性等,增进团队间的交流,并保证软件产品的质量。
2安全编程概念
2.1安全编程
安全编程是指开发人员首先需要具备一定的安全知识,然后识别数据在流转(输入、处理和输出)过程中可能面对的威胁,对这些威胁进行分析得出其利用的漏洞,通过合理地编写代码消除这些漏洞,降低软件面临的风险。
本规范对开发人员的编码提出统一的安全要求,主要涉及输入处理、输出处理、数据库访问、文件操作、异常管理等方面,如下图:
输入处理部分能指导开发者避免用户的不良输入;
输出处理能指导开发者对输出内容进行过滤;
数据库访问、文件操作部分则能指导开发者进行数据库查询,写入文件等操作时进行防护;
而异常管理、敏感数据保护、对象重用等技术则指导开发者改进软件的自身缺陷。
WEB开发规范部分则指导用户在WEB系统(B/S架构应用)的研发方面时如何增加对应用软件的保护。
2.2结构化编程
结构化编程,一种编程典范。
它采用子程序、程式码区块、for循环以及while循环等结构,来取代传统的goto。
希望借此来改善计算机程序的明晰性、品质以及开发时间,并且避免写出面条式代码。
2.3脆弱性
脆弱性指计算机系统安全方面的缺陷,使得系统或其应用数据的保密性、完整性、可用性、访问控制、监测机制等面临威胁。
2.4可信计算
可信计算的行为会更全面地遵循设计,而执行设计者和软件编写者所禁止的行为的概率很低。
2.5安全可信模块
审计和访问控制模块是唯一的安全可信模块。
2.6不可信任模块
除审计和访问控制模块外其它所有模块均为不可信模块。
2.7敏感信息
系统的敏感信息包括用户身份信息、认证信息、授权信息、交易过程中的私密或隐私信息、其它的敏感信息。
2.8特权
特权只是允许去做并不是每个人都可以做的事情。
2.9信息隐藏
信息隐藏指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。
信息隐藏基本原理框图:
2.10中间件
中间件是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通.中间件技术创建在对应用软件部分常用功能的抽象上,将常用且重要的过程调用、分布式组件、消息队列、事务、安全、连结器、商业流程、网络并发、HTTP服务器、WebService等功能集于一身或者分别在不同品牌的不同产品中分别完成。
2.11死锁
死锁是操作系统或软件运行的一种状态:
在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其它进程占用时,就形成了死锁。
2.12可信边界
可信边界可以被认为是在程序中划定的一条分隔线,一边的数据是不可信的而另一边则是可信的。
当数据要从不可信的一侧到可信一侧的时候,需要使用验证逻辑进行判断。
2.13元字符
元字符就是在编程语言中具有特定含义的字符或者字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用 系统安全 开发 技术规范
