应用系统安全开发技术规范V329602.docx
《应用系统安全开发技术规范V329602.docx》由会员分享,可在线阅读,更多相关《应用系统安全开发技术规范V329602.docx(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、应用系统统安全开发发技术规范范(版本号号 VV1.3)朗新科技技股份有有限公司司二一五五年十二月更改履历历版本号修改编号号更改时间间更改的图表和章章节号更改简要要描述更改人批准人0.520133-111-244初稿施伟施伟1.020155-111-199修改宋月欣陈志明1.120155-111-300修改宋月欣陈志明1.220155-122-3修改宋月欣施伟1.320155-122-3修改施伟注:更改改人除形形成初稿稿,以后后每次修修改在未未批准确确认前均均需采用用修订的的方式进进行修改改。目录1背景与目标12安全编程概念12.1安全编程12.2结构化编程22.3脆弱性22.4可信计算22.5
2、安全可信模块32.6不可信任模块32.7敏感信息32.8特权32.9信息隐藏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.1
3、0关键数据传输保护83.11禁止赋予用户进程特权83.12使用适当的数据类型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验证各种来源的
4、输入145.1.3保证所有的输入信息是被验证过的145.1.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 语句中来自于不可信区域
5、的输入参数进行验证185.3.5对数据库操作的返回数据进行验证185.3.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可配置数据
6、保护216.6禁止在源代码中写入口令216.7随机数216.8使用可信的密码算法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.
7、3组件配置257.10Web Service257.11RESTful Web 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
8、资源释放388.1.13内存控制388.1.14外部程序调用漏洞388.1.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临时文件处理501 背景与目目标在Intternnet大大众化及及Webb技术飞飞速演变变的今天天,Weeb安全全所面临临的挑战战日益严严峻。黑黑客攻击击技术越越来越成成熟和大大众化,针针对Weeb的攻攻击和破破坏不断断增长,WWe
9、b安安全风险险达到了了前所未未有的高高度。许多程序序员不知知道如何何开发安安全的应应用程序序,开发发出来的的Webb应用存存在较多多的安全全漏洞,这这些安全全漏洞一一旦被黑黑客利用用将导致致严重甚甚至是灾灾难性的的后果。这这并非危危言耸听听,类似似的网上上事故举举不胜举举,公司司的Weeb产品品也曾多多次遭黑黑客攻击击,甚至至有黑客客利用公公司Weeb产品品的漏洞洞敲诈运运营商,造造成极其其恶劣的的影响。本规范为为解决Weeb应用用系统安全全问题,对主要要的应用用安全问问题进行行分析,并并有针对对性的从从设计及开开发规范范、开发管管理、安安全组件件框架、安全测试方面提供整体的安全解决方案。使本
10、组织织能以标标准的、规规范的方方式设计计和编码码。通过过建立编编码规范范,以使使每个开开发人员员养成良良好的编编码风格格和习惯惯;并以以此形成成开发小小组编码码约定,提提高程序序的可靠靠性、可可读性、可可修改性性、可维维护性和和一致性性等,增增进团队队间的交交流,并并保证软软件产品品的质量量。2 安全编程程概念2.1 安全编程程安全编程程是指开开发人员员首先需需要具备备一定的的安全知知识,然然后识别别数据在在流转(输输入、处处理和输输出)过过程中可可能面对对的威胁胁,对这这些威胁胁进行分分析得出出其利用用的漏洞洞,通过过合理地地编写代代码消除除这些漏漏洞,降降低软件件面临的的风险。本规范对开发
11、人员的编码提出统一的安全要求,主要涉及输入处理、输出处理、数据库访问、文件操作、异常管理等方面,如下图:输入处理理部分能能指导开开发者避避免用户户的不良良输入;输出处处理能指指导开发发者对输输出内容容进行过过滤;数数据库访访问、文文件操作作部分则则能指导导开发者者进行数数据库查查询,写写入文件件等操作作时进行行防护;而异常常管理、敏敏感数据据保护、对对象重用用等技术术则指导导开发者者改进软软件的自自身缺陷陷。 WWEB 开发规规范部分分则指导导用户在在WEBB 系统统( BB/S 架构应应用)的的研发方方面时如如何增加加对应用用软件的的保护。2.2 结构化编编程结构化编编程,一一种编程程典范。
12、它它采用子子程序、程程式码区区块、ffor循循环以及及whiile循循环等结结构,来来取代传传统的ggotoo。希望望借此来来改善计计算机程程序的明明晰性、品品质以及及开发时时间,并并且避免免写出面面条式代代码。2.3 脆弱性脆弱性指指计算机机系统安安全方面面的缺陷陷,使得得系统或或其应用用数据的的保密性性、完整整性、可可用性、访访问控制制、监测测机制等等面临威威胁。2.4 可信计算算可信计算算的行为为会更全全面地遵遵循设计计,而执执行设计计者和软软件编写写者所禁禁止的行行为的概概率很低低。2.5 安全可信信模块审计和访访问控制制模块是是唯一的的安全可可信模块块。2.6 不可信任任模块除审计和
13、和访问控控制模块块外其它它所有模模块均为为不可信信模块。2.7 敏感信息息系统的敏敏感信息息包括用用户身份份信息、认证信信息、授权信信息、交易过过程中的的私密或或隐私信信息、其它的的敏感信信息。2.8 特权特权只是是允许去去做并不不是每个个人都可可以做的的事情。2.9 信息隐藏藏信息隐藏藏指在设设计和确确定模块块时,使使得一个个模块内内包含的的特定信信息(过过程或数数据),对对于不需需要这些些信息的的其他模模块来说说,是不不可访问问的。信息隐藏藏基本原原理框图图:2.10 中间件中间件是是提供系系统软件件和应用用软件之之间连接接的软件件,以便便于软件件各部件件之间的的沟通.中间件件技术创创建在
14、对对应用软软件部分分常用功功能的抽抽象上,将将常用且且重要的的过程调调用、分分布式组组件、消消息队列列、事务务、安全全、连结结器、商商业流程程、网络络并发、HTTP服务器、Web Service等功能集于一身或者分别在不同品牌的不同产品中分别完成。2.11 死锁死锁是操操作系统统或软件件运行的的一种状状态:在在多任务务系统下下,当一一个或多多个进程程等待系系统资源源,而资资源又被被进程本本身或其其它进程程占用时时,就形形成了死死锁。2.12 可信边界界可信边界界可以被被认为是是在程序序中划定定的一条条分隔线线,一边边的数据据是不可可信的而而另一边边则是可可信的。当当数据要要从不可可信的一一侧到
15、可可信一侧侧的时候候,需要要使用验验证逻辑辑进行判判断。2.13 元字符元字符就就是在编编程语言言中具有有特定含含义的字字符或者者字符串串。例如如在 SSQL 查询中中,单引引号()是危危险的字字符;在在文件系系统路径径中两个个点号(.)是危险的字符;在命令 shell 中,分号(;)和双&(&)符号同样是危险的字符,而换行符(n)对日志文件很关键。2.14 参数化查查询参数化查查询(PParaametteriizedd Quueryy 或 Paarammeteerizzed Staatemmentt)是指指在设计计与数据据库链接接并访问问数据时时,在需需要填入入数值或或数据的的地方,使使用参
16、数数 (PParaametter) 来给给值,这这个方法法目前已已被视为为最有效效可预防防SQLL注入攻攻击 (SQLL Innjecctioon) 的攻击击手法的的防御方方式。2.15 UNIXX JAAIL环环境一个被改改变根目目录的程程序不可可以访问问和命名名在被改改变根目目录外的的文件,那那个根目目录叫做做“chhrooot监狱狱(chhrooot jjaill,chhrooot pprisson)”。2.16 临时文件件创建临时时文件的的程序会会在完成成时将其其删除。2.17 信息熵信息熵指指信息的的不确定定性,一则高高信息度度的信息息熵是很很低的,低信息息度的熵熵则高。2.18 S
17、SL安全套接接层(SSecuure Soccketts LLayeer,SSLL),一一种安全全协议,是是网景公公司(NNetsscappe)在在推出WWeb浏浏览器首首版的同同时提出出的,目目的是为为网络通通信提供供安全及及数据完完整性。SSL在传输层对网络连接进行加密。SSL采采用公开开密钥技技术,保保证两个个应用间间通信的的保密性性和可靠靠性,使使客户与与服务器器应用之之间的通通信不被被攻击者者窃听。它它在服务务器和客客户机两两端可同同时被支支持,目目前已成成为互联联网上保保密通讯讯的工业业标准。现现行Weeb浏览览器亦普普遍将HHTTPP和SSLL相结合合,从而而实现安安全通信信。此协
18、协议和其其继任者者是TLLS。2.19 TLSSSL(Seccuree Soockeets Layyer)是是网景公公司(NNetsscappe)设设计的主主要用于于Webb的安全全传输协协议。这这种协议议在Weeb上获获得了广广泛的应应用。IIETFF(wwww.ieetf.orgg)将SSSL作了了标准化化,即RRFC222466,并将将其称为为TLSS(Traanspportt Laayerr Seecurrityy),其其最新版版本是RRFC552466,版本本1.22。从技技术上讲讲,TLLS1.0与SSLL3.00的差异异非常微微小。2.20 HTTPPS超文本传传输安全全协议(缩
19、缩写:HHTTPPS,英英语:HHypeerteext Traansffer Prootoccol Seccuree)是超超文本传传输协议议和SSSL/TTLS的的组合,用用以提供供加密通通讯及对对网络服服务器身身份的鉴鉴定。HHTTPPS连接接经常被被用于万万维网上上的交易易支付和和企业信信息系统统中敏感感信息的的传输。HTTPS不应与在RFC 2660中定义的安全超文本传输协议(S-HTTP)相混。2.21 Httpp会话在计算机机科学领领域来说说,尤其其是在网网络领域域,会话话(seessiion)是是一种持持久网络络协议,在在用户(或或用户代代理)端端和服务务器端之之间创建建关联,从从
20、而起到到交换数数据包的的作用机机制,ssesssionn在网络络协议(例例如teelneet或FTPP)中是是非常重重要的部部分。在不包含含会话层层(例如如UDPP)或者者是无法法长时间间驻留会会话层(例例如HTTTP)的的传输协协议中,会会话的维维持需要要依靠在在传输数数据中的的高级别别程序。例例如,在在浏览器器和远程程主机之之间的HHTTPP传输中中,HTTTP coookiee就会被被用来包包含一些些相关的的信息,例例如seessiion ID,参参数和权权限信息息等。当客户端端在多个个服务器器调取数数据时,保保持会话话状态的的一致性性是需要要注意的的,客户户端需用用同时保保持和某某一个
21、主主机的连连接,或或者多个个服务器器端需要要共享一一个储存存会话信信息的文文件系统统或者数数据库。否否则,当当用户在在一个新新的而不不是一开开始保存存会话信信息的主主机上提提交访问问请求的的时候,主主机会因因为无法法获知原原来主机机的会话话的访问问状态而而产生问问题。2.22 CookkieCookkie(复复数形态态Coookiees),中中文名称称为小型型文本文文件或小小甜饼,指指某些网网站为了了辨别用用户身份份而储存存在用户户本地终终端(CClieent Sidde)上上的数据据(通常常经过加加密)。定定义于RRFC221099。为网网景公司司的前雇雇员Loou MMonttullli在
22、19993年3月所发发明。2.23 HttppOnlly CCookkieHttppOnlly是包包含在HHttpp 响应应头信息息Sett-Coookiie中的的一个额额外标志志,如果果浏览器器支持HHttppOnlly标志志的话,在在生成CCookkie时时使用HHttppOnlly标志志可帮助助减轻客客户端脚脚本访问问受保护护的Coookiie时带带来的风风险(客客户端脚脚本不能能访问HHttppOnlly CCookkie)。3 安全编程程原则3.1 统一的安安全规范范每个软件件项目在在设计阶阶段都应应明确在在项目实实施过程程中项目目组应遵遵循的统统一规范范,具体体包括:1. 命名规则
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用 系统安全 开发 技术规范 V329602
限制150内