应用系统安全开发技术规范样本.docx
《应用系统安全开发技术规范样本.docx》由会员分享,可在线阅读,更多相关《应用系统安全开发技术规范样本.docx(63页珍藏版)》请在咨信网上搜索。
1、应用系统安全开发技术规范(版本号 V1.3)朗新科技股份二一五年十二月更改履历版本号修改编号更改时间更改图表和章节号更改简明描述更改人同意人0.5-11-24初稿施伟施伟1.0-11-19修改宋月欣陈志明1.1-11-30修改宋月欣陈志明1.2-12-3修改宋月欣施伟1.3-12-3修改施伟注:更改人除形成初稿,以后每次修改在未同意确定前均需采取修订方法进行修改。目录1背景与目标12安全编程概念12.1安全编程12.2结构化编程22.3脆弱性22.4可信计算22.5安全可信模块32.6不可信任模块32.7敏感信息32.8特权32.9信息隐藏32.10中间件32.11死锁42.12可信边界42.
2、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使用适当的数据类型93.13使用经过验证的安全代码93.14使用应用中间
3、件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对输入内容进行规范化处理后再进行验证155.1.5选择合适的数据验证
4、方式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.6分次提取数据185.3.7通过 row(行)级别的访问
5、控制来使用数据库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使用可信的密码算法226.9异常管理227应用安全设计规范237.1
6、应用安全规划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 Web Service267.12应用安全关注点277.1
7、3应用安全限制应对方案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.15整数溢出398.2C+安全编程规范398.2.1不
8、信任未知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 背景和目标在Internet大众化及Web技术飞速演变今天,Web安全所面临挑战日益严峻。黑客攻击技术越来越成熟和大众化,针对Web攻击和破坏不停增加,Web安全风险达成了前所未有高度。很多程序员不知道怎样开发安全应用程序,开发出来Web应用存在较多安全漏洞,这些安全漏洞一旦被黑客利用将造成严重甚至是灾难性后果。这并非危言耸听,类似网上事故
9、举不胜举,企业Web产品也曾数次遭黑客攻击,甚至有黑客利用企业Web产品漏洞敲诈运行商,造成极其恶劣影响。本规范为处理Web应用系统安全问题,对关键应用安全问题进行分析,并有针对性从设计及开发规范、开发管理、安全组件框架、安全测试方面提供整体安全处理方案。使本组织能以标准、规范方法设计和编码。经过建立编码规范,以使每个开发人员养成良好编码风格和习惯;并以此形成开发小组编码约定,提升程序可靠性、可读性、可修改性、可维护性和一致性等,促进团体间交流,并确保软件产品质量。 2 安全编程概念2.1 安全编程安全编程是指开发人员首先需要含有一定安全知识,然后识别数据在流转(输入、处理和输出)过程中可能面
10、正确威胁,对这些威胁进行分析得出其利用漏洞,经过合理地编写代码消除这些漏洞,降低软件面临风险。本规范对开发人员编码提出统一安全要求, 关键包含输入处理、 输出处理、 数据库访问、 文件操作、异常管理等方面,以下图: 输入处理部分能指导开发者避免用户不良输入;输出处理能指导开发者对输出内容进行过滤; 数据库访问、 文件操作部分则能指导开发者进行数据库查询, 写入文件等操作时进行防护; 而异常管理、敏感数据保护、对象重用等技术则指导开发者改善软件本身缺点。 WEB 开发规范部分则指导用户在WEB 系统( B/S 架构应用)研发方面时怎样增加对应用软件保护。 2.2 结构化编程结构化编程,一个编程典
11、范。它采取子程序、程式码区块、for循环和while循环等结构,来替换传统goto。期望借此来改善计算机程序明晰性、品质和开发时间,而且避免写出面条式代码。2.3 脆弱性脆弱性指计算机系统安全方面缺点,使得系统或其应用数据保密性、完整性、可用性、访问控制、监测机制等面临威胁。2.4 可信计算可信计算行为会更全方面地遵照设计,而实施设计者和软件编写者所严禁行为概率很低。2.5 安全可信模块审计和访问控制模块是唯一安全可信模块。2.6 不可信任模块除审计和访问控制模块外其它全部模块均为不可信模块。2.7 敏感信息系统敏感信息包含用户身份信息、认证信息、授权信息、交易过程中私密或隐私信息、其它敏感信
12、息。2.8 特权特权只是许可去做并不是每个人全部能够做事情。2.9 信息隐藏信息隐藏指在设计和确定模块时,使得一个模块内包含特定信息(过程或数据),对于不需要这些信息其它模块来说,是不可访问。信息隐藏基础原理框图:2.10 中间件中间件是提供系统软件和应用软件之间连接软件,方便于软件各部件之间沟通.中间件技术创建在对应用软件部分常见功效抽象上,将常见且关键过程调用、分布式组件、消息队列、事务、安全、连结器、商业步骤、网络并发、HTTP服务器、Web Service等功效集于一身或分别在不一样品牌不一样产品中分别完成。2.11 死锁死锁是操作系统或软件运行一个状态:在多任务系统下,当一个或多个进
13、程等候系统资源,而资源又被进程本身或其它进程占用时,就形成了死锁。2.12 可信边界可信边界能够被认为是在程序中划定一条分隔线,一边数据是不可信而另一边则是可信。当数据要从不可信一侧到可信一侧时候,需要使用验证逻辑进行判定。 2.13 元字符元字符就是在编程语言中含有特定含义字符或字符串。比如在 SQL 查询中,单引号()是危险字符;在文件系统路径中两个点号(.)是危险字符; 在命令 shell 中,分号(;)和双 &(&)符号一样是危险字符,而换行符(n) 对日志文件很关键。2.14 参数化查询参数化查询(Parameterized Query 或 Parameterized Stateme
14、nt)是指在设计和数据库链接并访问数据时,在需要填入数值或数据地方,使用参数 (Parameter) 来给值,这个方法现在已被视为最有效可预防SQL注入攻击 (SQL Injection) 攻击手法防御方法。2.15 UNIX JAIL环境一个被改变根目录程序不能够访问和命名在被改变根目录外文件,那个根目录叫做“chroot监狱(chroot jail,chroot prison)”。2.16 临时文件创建临时文件程序会在完成时将其删除。2.17 信息熵信息熵指信息不确定性,一则高信息度信息熵是很低,低信息度熵则高。2.18 SSL安全套接层(Secure Sockets Layer,SSL)
15、,一个安全协议,是网景企业(Netscape)在推出Web浏览器首版同时提出,目标是为网络通信提供安全及数据完整性。SSL在传输层对网络连接进行加密。SSL采取公开密钥技术,确保两个应用间通信保密性和可靠性,使用户和服务器应用之间通信不被攻击者窃听。它在服务器和用户机两端可同时被支持,现在已成为互联网上保密通讯工业标准。现行Web浏览器亦普遍将HTTP和SSL相结合,从而实现安全通信。此协议和其继任者是TLS。2.19 TLSSSL(Secure Sockets Layer)是网景企业(Netscape)设计关键用于Web安全传输协议。这种协议在Web上取得了广泛应用。IETF(.org)将S
16、SL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),其最新版本是RFC5246,版本1.2。从技术上讲,TLS1.0和SSL3.0差异很微小。2.20 HTTPS超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS组合,用以提供加密通讯及对网络服务器身份判定。HTTPS连接常常被用于万维网上交易支付和企业信息系统中敏感信息传输。HTTPS不应和在RFC 2660中定义安全超文本传输协议(S-HTTP)相混。2.21 Http会话在计算机科学领域来说,
17、尤其是在网络领域,会话(session)是一个持久网络协议,在用户(或用户代理)端和服务器端之间创建关联,从而起到交换数据包作用机制,session在网络协议(比如telnet或FTP)中是很关键部分。在不包含会话层(比如UDP)或是无法长时间驻留会话层(比如HTTP)传输协议中,会话维持需要依靠在传输数据中高等级程序。比如,在浏览器和远程主机之间HTTP传输中,HTTP cookie就会被用来包含部分相关信息,比如session ID,参数和权限信息等。当用户端在多个服务器调取数据时,保持会话状态一致性是需要注意,用户端需用同时保持和某一个主机连接,或多个服务器端需要共享一个储存会话信息文件
18、系统或数据库。不然,当用户在一个新而不是一开始保留会话信息主机上提交访问请求时候,主机会因为无法获知原来主机会话访问状态而产生问题。2.22 CookieCookie(复数形态Cookies),汉字名称为小型文本文件或小甜饼,指一些网站为了分辨用户身份而储存在用户当地终端(Client Side)上数据(通常经过加密)。定义于RFC2109。为网景企业前雇员Lou Montulli在1993年3月所发明。2.23 HttpOnly CookieHttpOnly是包含在Http 响应头信息Set-Cookie中一个额外标志,假如浏览器支持HttpOnly标志话,在生成Cookie时使用HttpO
19、nly标志可帮助减轻用户端脚本访问受保护Cookie时带来风险(用户端脚本不能访问HttpOnly Cookie)。3 安全编程标准3.1 统一安全规范每个软件项目在设计阶段全部应明确在项目实施过程中项目组应遵照统一规范,具体包含:1. 命名规则、组件使用规范、异常处理规范、日志处理规范、工具使用要求、 代码集成规范。2. 针对本规范提出关键代码脆弱性应进行对应防范设计,具体内容应在软件概要设计中表现或有单独文档表现。3.2 模块划分1. 软件应该根据安全性划分模块,审计和访问控制模块为安全可信模块,其它模块为不可信任模块。只有安全可信模块才能够实施安全控制功效,其它模块不能访问安全可信模块安
20、全信息、功效或权限。安全可信模块应该和其它模块分离,由经授权内部专员进行管理。2. 只有安全可信模块,才能以高安全等级访问系统敏感信息,对于其它模块限制其访问敏感信息。3.3 最小化功效依据“没有明确许可就默认严禁”标准, 软件应只包含那些为达成某个目标而确实需要功效,不应包含只是在未来某个时间需要但需求说明书中没有功效。 软件在最小化功效建设方面应遵照以下标准:1. 只运行明确定义功效。2. 系统调用只在确实需要时候。3. 一次只实施一个任务。4. 只有在上一个任务完成后才开始下一个任务。5. 只在确实需要时候访问数据。3.4 最小化特权1. 只为程序中需要特权部分授和特权。2. 只授和部分
21、绝对需要具体特权。3. 将特权有效时间或能够有效时间限制到绝对最小。3.5 对多任务、多进程加以关注软件开发应尽可能使用单任务程序。假如软件需要使用多任务和多进程,应该认真分析研究多任务和多进程会不会发生冲突,同时全部进程和任务以避免冲突。 同时作为结构化编程, 每个原子化组件全部要确保一个入口和一个出口。假如进程之间需要交互,则这些交互操作应同时。对于每一个可能交互情况全部要考虑相关安全策略。3.6 界面输出最小化软件应保持用户界面只提供必需功效,没有多出、无须要功效,确保用户不能经过用户界面直接访问数据或直接访问被保护对象。3.7 使代码简单、最小化和易于修改开发时应尽可能使代码简单、最小
22、化和易于修改。使用结构化编程语言,尽可能避免使用递归和 Goto 申明。使用简单代码,清除无须要功效,预防采取信息隐藏方法进行数据保护。3.8 避免高危服务、协议软件应尽可能避免使用不加保护及已被证实存在安全漏洞服务和通信协议传输文件,如FTP 、SMTP。3.9 数据和代码分离软件应该把数据和程序放置在不一样目录中,这里数据包含远程下载文件等。3.10 关键数据传输保护1. 软件在传输关键数据时,使用加密算法确保数据在通信过程不被破译,使用数字署名确保数据在传输过程中一致性和不可否认性。相关加密算法和署名技术等应符合国家相关法律法规要求。2. 信息隐藏是不可靠、 效率低做法,软件应该使用正确
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用 系统安全 开发 技术规范 样本
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。