{技术规范标准}应用系统安全开发技术规范讲义

上传人:管****问 文档编号:138105635 上传时间:2020-07-13 格式:DOCX 页数:60 大小:412.45KB
返回 下载 相关 举报
{技术规范标准}应用系统安全开发技术规范讲义_第1页
第1页 / 共60页
{技术规范标准}应用系统安全开发技术规范讲义_第2页
第2页 / 共60页
{技术规范标准}应用系统安全开发技术规范讲义_第3页
第3页 / 共60页
{技术规范标准}应用系统安全开发技术规范讲义_第4页
第4页 / 共60页
{技术规范标准}应用系统安全开发技术规范讲义_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《{技术规范标准}应用系统安全开发技术规范讲义》由会员分享,可在线阅读,更多相关《{技术规范标准}应用系统安全开发技术规范讲义(60页珍藏版)》请在金锄头文库上搜索。

1、应用系统安全开发技术规范(版本号 V1.3)朗新科技股份有限公司二一五年十二月 更改履历版本号修改编号更改时间更改的图表和章节号更改简要描述更改人批准人0.52013-11-24初稿施伟施伟1.02015-11-19修改宋月欣陈志明1.12015-11-30修改宋月欣陈志明1.22015-12-3修改宋月欣施伟1.32015-12-3修改施伟注:更改人除形成初稿,以后每次修改在未批准确认前均需采用修订的方式进行修改。 目录1背景与目标12安全编程概念12.1安全编程12.2结构化编程22.3脆弱性22.4可信计算22.5安全可信模块32.6不可信任模块32.7敏感信息32.8特权32.9信息隐

2、藏32.10中间件32.11死锁42.12可信边界42.13元字符42.14参数化查询42.15UNIX JAIL环境42.16临时文件42.17信息熵52.18SSL52.19TLS52.20HTTPS52.21Http会话52.22Cookie62.23HttpOnly Cookie63安全编程原则63.1统一的安全规范63.2模块划分63.3最小化功能73.4最小化特权73.5对多任务、多进程加以关注73.6界面输出最小化73.7使代码简单、最小化和易于修改83.8避免高危的服务、协议83.9数据和代码分离83.10关键数据传输保护83.11禁止赋予用户进程特权83.12使用适当的数据类

3、型93.13使用经过验证的安全代码93.14使用应用中间件93.15设计错误、 异常处理机制93.16提供备份机制93.17检查传递变量的合法性93.18检查所有函数返回代码93.19修改面向用户的操作的反馈缺省描述93.20文件操作的要求103.21其他编码原则104应用安全分析114.1安全需求114.2安全威胁114.2.1Web安全漏洞114.2.2拒绝服务攻击124.2.3嗅探攻击124.2.4中间人攻击124.3安全约束135安全编程要求135.1输入处理135.1.1建立可信边界135.1.2验证各种来源的输入145.1.3保证所有的输入信息是被验证过的145.1.4对输入内容进

4、行规范化处理后再进行验证155.1.5选择合适的数据验证方式155.1.6防范元字符攻击155.1.7拒绝验证失败的数据155.1.8在服务端进行验证155.1.9建立统一的输入验证接口165.1.10控制写入日志的信息165.1.11从服务器端提取关键参数165.2输出处理165.2.1限制返回给客户的信息165.2.2建立错误信息保护机制165.3数据库访问165.3.1合理分配数据库访问权限165.3.2合理存放数据库连接帐号和密码信息175.3.3使用参数化请求方式175.3.4对 SQL 语句中来自于不可信区域的输入参数进行验证185.3.5对数据库操作的返回数据进行验证185.3.

5、6分次提取数据185.3.7通过 row(行)级别的访问控制来使用数据库185.3.8确保数据库资源被释放185.4文件操作195.4.1对上传文件进行限制195.4.2把文件名以及文件内容作为不可信的输入对待195.4.3安全的使用文件名195.4.4使用文件系统访问控制195.4.5注意文件访问竞争条件195.4.6安全使用临时文件205.4.7确保文件系统资源被释放206安全特征206.1关注应用的对象重用206.2用户访问控制信息的机密性206.3不要在客户端存放敏感数据206.4避免内存溢出216.5可配置数据保护216.6禁止在源代码中写入口令216.7随机数216.8使用可信的密

6、码算法226.9异常管理227应用安全设计规范237.1应用安全规划237.2数据安全等级划分237.3数据库规划237.3.1用户权限237.3.2数据源设计237.3.3外部系统访问237.4角色划分247.5URL规划247.6程序文件目录规划247.6.1数据及程序分离247.6.2静态程序资源247.6.3程序文件分类247.7Cookie247.8文件安全257.8.1文件存储257.8.2文件操作257.8.3文件类型257.9第三方组件安全257.9.1组件兼容性257.9.2组件安全及成熟度257.9.3组件配置257.10Web Service257.11RESTful W

7、eb Service267.12应用安全关注点277.13应用安全限制应对方案297.13.1外网隔离297.13.2外网文件操作297.13.3正向和反向隔离装置(国网系统)298应用安全开发规范308.1Java及Web安全编程规范308.1.1不信任未知308.1.2数据层开发308.1.3会话管理328.1.4Cookie338.1.5输入验证338.1.6输入文件名的验证348.1.7输出处理348.1.8敏感信息处理368.1.9异常信息处理378.1.10特殊页面跳转378.1.11文件操作378.1.12资源释放388.1.13内存控制388.1.14外部程序调用漏洞388.1

8、.15整数溢出398.2C+安全编程规范398.2.1不信任未知398.2.2免缓存区溢出408.2.3免缓整数溢出428.2.4域名合法性检查458.2.5检查返回值468.2.6产生随机数478.2.7验证输入文件名488.2.8类设计注意事项488.2.9外部程序调用漏洞508.2.10临时文件处理50应用系统安全开发技术规范1 背景与目标在Internet大众化及Web技术飞速演变的今天,Web安全所面临的挑战日益严峻。黑客攻击技术越来越成熟和大众化,针对Web的攻击和破坏不断增长,Web安全风险达到了前所未有的高度。许多程序员不知道如何开发安全的应用程序,开发出来的Web应用存在较多

9、的安全漏洞,这些安全漏洞一旦被黑客利用将导致严重甚至是灾难性的后果。这并非危言耸听,类似的网上事故举不胜举,公司的Web产品也曾多次遭黑客攻击,甚至有黑客利用公司Web产品的漏洞敲诈运营商,造成极其恶劣的影响。本规范为解决Web应用系统安全问题,对主要的应用安全问题进行分析,并有针对性的从设计及开发规范、开发管理、安全组件框架、安全测试方面提供整体的安全解决方案。使本组织能以标准的、规范的方式设计和编码。通过建立编码规范,以使每个开发人员养成良好的编码风格和习惯;并以此形成开发小组编码约定,提高程序的可靠性、可读性、可修改性、可维护性和一致性等,增进团队间的交流,并保证软件产品的质量。 2 安

10、全编程概念2.1 安全编程安全编程是指开发人员首先需要具备一定的安全知识,然后识别数据在流转(输入、处理和输出)过程中可能面对的威胁,对这些威胁进行分析得出其利用的漏洞,通过合理地编写代码消除这些漏洞,降低软件面临的风险。本规范对开发人员的编码提出统一的安全要求, 主要涉及输入处理、 输出处理、 数据库访问、 文件操作、异常管理等方面,如下图: 输入处理部分能指导开发者避免用户的不良输入;输出处理能指导开发者对输出内容进行过滤; 数据库访问、 文件操作部分则能指导开发者进行数据库查询, 写入文件等操作时进行防护; 而异常管理、敏感数据保护、对象重用等技术则指导开发者改进软件的自身缺陷。 WEB

11、 开发规范部分则指导用户在WEB 系统( B/S 架构应用)的研发方面时如何增加对应用软件的保护。 2.2 结构化编程结构化编程,一种编程典范。它采用子程序、程式码区块、for循环以及while循环等结构,来取代传统的goto。希望借此来改善计算机程序的明晰性、品质以及开发时间,并且避免写出面条式代码。2.3 脆弱性脆弱性指计算机系统安全方面的缺陷,使得系统或其应用数据的保密性、完整性、可用性、访问控制、监测机制等面临威胁。2.4 可信计算可信计算的行为会更全面地遵循设计,而执行设计者和软件编写者所禁止的行为的概率很低。2.5 安全可信模块审计和访问控制模块是唯一的安全可信模块。2.6 不可信

12、任模块除审计和访问控制模块外其它所有模块均为不可信模块。2.7 敏感信息系统的敏感信息包括用户身份信息、认证信息、授权信息、交易过程中的私密或隐私信息、其它的敏感信息。2.8 特权特权只是允许去做并不是每个人都可以做的事情。2.9 信息隐藏信息隐藏指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。信息隐藏基本原理框图:2.10 中间件中间件是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通.中间件技术创建在对应用软件部分常用功能的抽象上,将常用且重要的过程调用、分布式组件、消息队列、事务、安全、连结器、商业流程、网络并发、HTTP服务器、Web Service等功能集于一身或者分别在不同品牌的不同产品中分别完成。2.11 死锁死锁是操作系统或软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其它进程占用时,就形成了死锁。2.12 可信边界可信边界可以被认为是在程序中划定的一条分隔线,一边的数据是不可信的而另一边则是可信的。当数据要从不可信的一侧到可信一侧的时候,需要使用验证逻辑进行判断。 2.13 元字符元字符就是在编程语言中具有特定含义的字符或者字符

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号