《应用系统安全开发技术规范培训资料15982.docx》由会员分享,可在线阅读,更多相关《应用系统安全开发技术规范培训资料15982.docx(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、应用系统统安全开发发技术规范范(版本号号 VV1.3)朗新科技技股份有有限公司司二一五五年十二月 更改履历历版本号修改编号号更改时间间更改的图表和章章节号更改简要要描述更改人批准人0.520133-111-244初稿施伟施伟1.020155-111-199修改宋月欣陈志明1.120155-111-300修改宋月欣陈志明1.220155-122-3修改宋月欣施伟1.320155-122-3修改施伟注:更改改人除形形成初稿稿,以后后每次修修改在未未批准确确认前均均需采用用修订的的方式进进行修改改。 目录1背景与与目标112安全编编程概念念12.1安安全编程程12.2结结构化编编程22.3脆脆弱性2
2、22.4可可信计算算22.5安安全可信信模块332.6不不可信任任模块332.7敏敏感信息息32.8特特权32.9信信息隐藏藏32.100中间件件32.111死锁42.122可信边边界42.133元字符符42.144参数化化查询442.155UNIIX JJAILL环境442.166临时文文件42.177信息熵熵52.188SSLL52.199TLSS52.200HTTTPS552.211Htttp会话话52.222Coookiee62.233HtttpOnnly Coookiee63安全编编程原则则63.1统统一的安安全规范范63.2模模块划分分63.3最最小化功功能73.4最最小化特特权7
3、3.5对对多任务务、多进进程加以以关注773.6界界面输出出最小化化73.7使使代码简简单、最最小化和和易于修修改83.8避避免高危危的服务务、协议议83.9数数据和代代码分离离83.100关键数数据传输输保护883.111禁止赋赋予用户户进程特特权83.122使用适适当的数数据类型型93.133使用经经过验证证的安全全代码993.144使用应应用中间间件93.155设计错错误、 异常处处理机制制93.166提供备备份机制制93.177检查传传递变量量的合法法性93.188检查所所有函数数返回代代码93.199修改面面向用户户的操作作的反馈馈缺省描描述93.200文件操操作的要要求1003.2
4、11其他编编码原则则104应用安安全分析析114.1安安全需求求114.2安安全威胁胁114.2.1Weeb安全全漏洞1114.2.2拒绝绝服务攻攻击1224.2.3嗅探探攻击1124.2.4中间间人攻击击124.3安安全约束束135安全编编程要求求135.1输输入处理理135.1.1建立立可信边边界1335.1.2验证证各种来来源的输输入1445.1.3保证证所有的的输入信信息是被被验证过过的1445.1.4对输输入内容容进行规规范化处处理后再再进行验验证1555.1.5选择择合适的的数据验验证方式式155.1.6防范范元字符符攻击1155.1.7拒绝绝验证失失败的数数据1555.1.8在服
5、服务端进进行验证证155.1.9建立立统一的的输入验验证接口口165.1.10控控制写入入日志的的信息1165.1.11从从服务器器端提取取关键参参数1665.2输输出处理理165.2.1限制制返回给给客户的的信息1165.2.2建立立错误信信息保护护机制1165.3数数据库访访问1665.3.1合理理分配数数据库访访问权限限165.3.2合理理存放数数据库连连接帐号号和密码码信息1175.3.3使用用参数化化请求方方式1775.3.4对 SQLL 语句句中来自自于不可可信区域域的输入入参数进进行验证证185.3.5对数数据库操操作的返返回数据据进行验验证1885.3.6分次次提取数数据188
6、5.3.7通过过 roow(行行)级别别的访问问控制来来使用数数据库1185.3.8确保保数据库库资源被被释放1185.4文文件操作作195.4.1对上上传文件件进行限限制1995.4.2把文文件名以以及文件件内容作作为不可可信的输输入对待待195.4.3安全全的使用用文件名名195.4.4使用用文件系系统访问问控制1195.4.5注意意文件访访问竞争争条件1195.4.6安全全使用临临时文件件205.4.7确保保文件系系统资源源被释放放206安全特特征2006.1关关注应用用的对象象重用2206.2用用户访问问控制信信息的机机密性2206.3不不要在客客户端存存放敏感感数据2206.4避避免
7、内存存溢出2216.5可可配置数数据保护护216.6禁禁止在源源代码中中写入口口令2116.7随随机数2216.8使使用可信信的密码码算法2226.9异异常管理理227应用安安全设计计规范2237.1应应用安全全规划2237.2数数据安全全等级划划分2337.3数数据库规规划2337.3.1用户户权限2237.3.2数据据源设计计237.3.3外部部系统访访问2337.4角角色划分分247.5UURL规规划2447.6程程序文件件目录规规划2447.6.1数据据及程序序分离2247.6.2静态态程序资资源2447.6.3程序序文件分分类2447.7CCookkie2247.8文文件安全全257
8、.8.1文件件存储2257.8.2文件件操作2257.8.3文件件类型2257.9第第三方组组件安全全257.9.1组件件兼容性性257.9.2组件件安全及及成熟度度257.9.3组件件配置2257.100Webb Seerviice2257.111RESSTfuul WWeb Serrvicce2667.122应用安安全关注注点2777.133应用安安全限制制应对方方案2997.133.1外外网隔离离297.133.2外外网文件件操作2297.133.3正正向和反反向隔离离装置(国国网系统统)2998应用安安全开发发规范3308.1JJavaa及Weeb安全全编程规规范3008.1.1不信信
9、任未知知308.1.2数据据层开发发308.1.3会话话管理3328.1.4Coookiie3338.1.5输入入验证3338.1.6输入入文件名名的验证证348.1.7输出出处理3348.1.8敏感感信息处处理3668.1.9异常常信息处处理3778.1.10特特殊页面面跳转3378.1.11文文件操作作378.1.12资资源释放放388.1.13内内存控制制388.1.14外外部程序序调用漏漏洞3888.1.15整整数溢出出398.2CC+安安全编程程规范3398.2.1不信信任未知知398.2.2免缓缓存区溢溢出4008.2.3免缓缓整数溢溢出4228.2.4域名名合法性性检查4458.
10、2.5检查查返回值值468.2.6产生生随机数数478.2.7验证证输入文文件名4488.2.8类设设计注意意事项4488.2.9外部部程序调调用漏洞洞508.2.10临临时文件件处理550应用系统安全开发技术规范1 背景与目目标在Intternnet大大众化及及Webb技术飞飞速演变变的今天天,Weeb安全全所面临临的挑战战日益严严峻。黑黑客攻击击技术越越来越成成熟和大大众化,针针对Weeb的攻攻击和破破坏不断断增长,WWeb安安全风险险达到了了前所未未有的高高度。许多程序序员不知知道如何何开发安安全的应应用程序序,开发发出来的的Webb应用存存在较多多的安全全漏洞,这这些安全全漏洞一一旦被
11、黑黑客利用用将导致致严重甚甚至是灾灾难性的的后果。这这并非危危言耸听听,类似似的网上上事故举举不胜举举,公司司的Weeb产品品也曾多多次遭黑黑客攻击击,甚至至有黑客客利用公公司Weeb产品品的漏洞洞敲诈运运营商,造造成极其其恶劣的的影响。本规范为为解决Weeb应用用系统安全全问题,对主要要的应用用安全问问题进行行分析,并并有针对对性的从从设计及开开发规范范、开发管管理、安安全组件件框架、安全测试方面提供整体的安全解决方案。使本组织织能以标标准的、规规范的方方式设计计和编码码。通过过建立编编码规范范,以使使每个开开发人员员养成良良好的编编码风格格和习惯惯;并以以此形成成开发小小组编码码约定,提提
12、高程序序的可靠靠性、可可读性、可可修改性性、可维维护性和和一致性性等,增增进团队队间的交交流,并并保证软软件产品品的质量量。2 安全编程程概念2.1 安全编程程安全编程程是指开开发人员员首先需需要具备备一定的的安全知知识,然然后识别别数据在在流转(输输入、处处理和输输出)过过程中可可能面对对的威胁胁,对这这些威胁胁进行分分析得出出其利用用的漏洞洞,通过过合理地地编写代代码消除除这些漏漏洞,降降低软件件面临的的风险。本规范对开发人员的编码提出统一的安全要求, 主要涉及输入处理、 输出处理、 数据库访问、 文件操作、异常管理等方面,如下图: 输入处理理部分能能指导开开发者避避免用户户的不良良输入;
13、输出处处理能指指导开发发者对输输出内容容进行过过滤; 数据库库访问、 文件操操作部分分则能指指导开发发者进行行数据库库查询, 写入文文件等操操作时进进行防护护; 而而异常管管理、敏敏感数据据保护、对对象重用用等技术术则指导导开发者者改进软软件的自自身缺陷陷。 WWEB 开发规规范部分分则指导导用户在在WEBB 系统统( BB/S 架构应应用)的的研发方方面时如如何增加加对应用用软件的的保护。 2.2 结构化编编程结构化编编程,一一种编程程典范。它它采用子子程序、程程式码区区块、ffor循循环以及及whiile循循环等结结构,来来取代传传统的ggotoo。希望望借此来来改善计计算机程程序的明明晰
14、性、品品质以及及开发时时间,并并且避免免写出面面条式代代码。2.3 脆弱性脆弱性指指计算机机系统安安全方面面的缺陷陷,使得得系统或或其应用用数据的的保密性性、完整整性、可可用性、访访问控制制、监测测机制等等面临威威胁。2.4 可信计算算可信计算算的行为为会更全全面地遵遵循设计计,而执执行设计计者和软软件编写写者所禁禁止的行行为的概概率很低低。2.5 安全可信信模块审计和访访问控制制模块是是唯一的的安全可可信模块块。2.6 不可信任任模块除审计和和访问控控制模块块外其它它所有模模块均为为不可信信模块。2.7 敏感信息息系统的敏敏感信息息包括用用户身份份信息、认证信信息、授权信信息、交易过过程中的
15、的私密或或隐私信信息、其它的的敏感信信息。2.8 特权特权只是是允许去去做并不不是每个个人都可可以做的的事情。2.9 信息隐藏藏信息隐藏藏指在设设计和确确定模块块时,使使得一个个模块内内包含的的特定信信息(过过程或数数据),对对于不需需要这些些信息的的其他模模块来说说,是不不可访问问的。信息隐藏藏基本原原理框图图:2.10 中间件中间件是是提供系系统软件件和应用用软件之之间连接接的软件件,以便便于软件件各部件件之间的的沟通.中间件件技术创创建在对对应用软软件部分分常用功功能的抽抽象上,将将常用且且重要的的过程调调用、分分布式组组件、消消息队列列、事务务、安全全、连结结器、商商业流程程、网络络并
16、发、HHTTPP服务器器、Weeb SServvicee等功能能集于一一身或者者分别在在不同品品牌的不不同产品品中分别别完成。2.11 死锁死锁是操操作系统统或软件件运行的的一种状状态:在在多任务务系统下下,当一一个或多多个进程程等待系系统资源源,而资资源又被被进程本本身或其其它进程程占用时时,就形形成了死死锁。2.12 可信边界界可信边界界可以被被认为是是在程序序中划定定的一条条分隔线线,一边边的数据据是不可可信的而而另一边边则是可可信的。当当数据要要从不可可信的一一侧到可可信一侧侧的时候候,需要要使用验验证逻辑辑进行判判断。 2.13 元字符元字符就就是在编编程语言言中具有有特定含含义的字
17、字符或者者字符串串。例如如在 SSQL 查询中中,单引引号()是危危险的字字符;在在文件系系统路径径中两个个点号(.)是危险的字符; 在命令 shell 中,分号(;)和双 &(&)符号同样是危险的字符,而换行符(n) 对日志文件很关键。2.14 参数化查查询参数化查查询(PParaametteriizedd Quueryy 或 Parrameeterrizeed SStattemeent)是是指在设设计与数数据库链链接并访访问数据据时,在在需要填填入数值值或数据据的地方方,使用用参数 (Paarammeteer) 来给值值,这个个方法目目前已被被视为最最有效可可预防SSQL注注入攻击击 (S
18、SQL Injjecttionn) 的的攻击手手法的防防御方式式。2.15 UNIXX JAAIL环环境一个被改改变根目目录的程程序不可可以访问问和命名名在被改改变根目目录外的的文件,那那个根目目录叫做做“chrroott监狱(cchrooot jaiil,cchrooot priisonn)”。2.16 临时文件件创建临时时文件的的程序会会在完成成时将其其删除。2.17 信息熵信息熵指指信息的的不确定定性,一一则高信信息度的的信息熵熵是很低低的,低低信息度度的熵则则高。2.18 SSL安全套接接层(SSecuure Soccketts LLayeer,SSSL),一一种安全全协议,是是网景公
19、公司(NNetsscappe)在在推出WWeb浏浏览器首首版的同同时提出出的,目目的是为为网络通通信提供供安全及及数据完完整性。SSSL在在传输层层对网络络连接进进行加密密。SSL采采用公开开密钥技技术,保保证两个个应用间间通信的的保密性性和可靠靠性,使使客户与与服务器器应用之之间的通通信不被被攻击者者窃听。它它在服务务器和客客户机两两端可同同时被支支持,目目前已成成为互联联网上保保密通讯讯的工业业标准。现现行Weeb浏览览器亦普普遍将HHTTPP和SSSL相结结合,从从而实现现安全通通信。此此协议和和其继任任者是TTLS。2.19 TLSSSL(SSecuure Soccketts LLay
20、eer)是是网景公公司(NNetsscappe)设设计的主主要用于于Webb的安全全传输协协议。这这种协议议在Weeb上获获得了广广泛的应应用。IIETFF()将将SSLL作了标标准化,即即RFCC22446,并并将其称称为TLLS(TTrannspoort Layyer Seccuriity),其其最新版版本是RRFC552466,版本本1.22。从技技术上讲讲,TLLS1.0与SSSL33.0的的差异非非常微小小。2.20 HTTPPS超文本传传输安全全协议(缩缩写:HHTTPPS,英英语:HHypeerteext Traansffer Prootoccol Seccuree)是超超文本传
21、传输协议议和SSSL/TTLS的的组合,用用以提供供加密通通讯及对对网络服服务器身身份的鉴鉴定。HHTTPPS连接接经常被被用于万万维网上上的交易易支付和和企业信信息系统统中敏感感信息的的传输。HHTTPPS不应应与在RRFC 26660中定定义的安安全超文文本传输输协议(SS-HTTTP)相相混。2.21 Httpp会话在计算机机科学领领域来说说,尤其其是在网网络领域域,会话话(seessiion)是是一种持持久网络络协议,在在用户(或或用户代代理)端端和服务务器端之之间创建建关联,从从而起到到交换数数据包的的作用机机制,ssesssionn在网络络协议(例例如teelneet或FFTP)中
22、中是非常常重要的的部分。在不包含含会话层层(例如如UDPP)或者者是无法法长时间间驻留会会话层(例例如HTTTP)的的传输协协议中,会会话的维维持需要要依靠在在传输数数据中的的高级别别程序。例例如,在在浏览器器和远程程主机之之间的HHTTPP传输中中,HTTTP coookiee就会被被用来包包含一些些相关的的信息,例例如seessiion ID,参参数和权权限信息息等。当客户端端在多个个服务器器调取数数据时,保保持会话话状态的的一致性性是需要要注意的的,客户户端需用用同时保保持和某某一个主主机的连连接,或或者多个个服务器器端需要要共享一一个储存存会话信信息的文文件系统统或者数数据库。否否则,
23、当当用户在在一个新新的而不不是一开开始保存存会话信信息的主主机上提提交访问问请求的的时候,主主机会因因为无法法获知原原来主机机的会话话的访问问状态而而产生问问题。2.22 CookkieCookkie(复复数形态态Coookiees),中中文名称称为小型型文本文文件或小小甜饼,指指某些网网站为了了辨别用用户身份份而储存存在用户户本地终终端(CClieent Sidde)上上的数据据(通常常经过加加密)。定定义于RRFC221099。为网网景公司司的前雇雇员Loou MMonttullli在119933年3月月所发明明。2.23 HttppOnlly CCookkieHttppOnlly是包包含
24、在HHttpp 响应应头信息息Sett-Coookiie中的的一个额额外标志志,如果果浏览器器支持HHttppOnlly标志志的话,在在生成CCookkie时时使用HHttppOnlly标志志可帮助助减轻客客户端脚脚本访问问受保护护的Coookiie时带带来的风风险(客客户端脚脚本不能能访问HHttppOnlly CCookkie)。3 安全编程程原则3.1 统一的安安全规范范每个软件件项目在在设计阶阶段都应应明确在在项目实实施过程程中项目目组应遵遵循的统统一规范范,具体体包括:1. 命名规则则、组件件使用规规范、异异常处理理规范、日日志处理理规范、工工具使用用要求、 代码集集成规范范。2.
25、针对本规规范提出出的主要要代码脆脆弱性应应进行相相应的防防范设计计,具体体内容应应在软件件概要设设计中体体现或有有单独的的文档体体现。3.2 模块划分分1. 软件应该该按照安安全性划划分模块块,审计计和访问问控制模模块为安安全可信信模块,其其它模块块为不可可信任模模块。只只有安全全可信模模块才可可以执行行安全控控制功能能,其它它的模块块不能访访问安全全可信模模块的安安全信息息、功能能或者权权限。安安全可信信模块应应该与其其它模块块分离,由由经授权权的内部部专人进进行管理理。2. 只有安全全可信模模块,才才能以高高安全等等级访问问系统的的敏感信信息,对对于其他他模块限限制其访访问敏感感信息。3.
26、3 最小化功功能根据“没没有明确确允许的的就默认认禁止”的原则则, 软软件应只只包含那那些为达达到某个个目标而而确实需需要的功功能,不不应包含含只是在在将来某某个时间间需要但但需求说说明书中中没有的的功能。 软件在在最小化化功能建建设方面面应遵循循如下原原则:1. 只运行明明确定义义的功能能。2. 系统调用用只在确确实需要要的时候候。3. 一次只执执行一个个任务。4. 只有在上上一个任任务完成成后才开开始下一一个任务务。5. 只在确实实需要的的时候访访问数据据。3.4 最小化特特权1. 只为程序序中需要要特权的的部分授授与特权权。2. 只授与部部分绝对对需要的的具体特特权。3. 将特权的的有效
27、时时间或者者可以有有效的时时间限制制到绝对对最小。3.5 对多任务务、多进进程加以以关注软件开发发应尽量量使用单单任务的的程序。如如果软件件需要使使用多任任务和多多进程,应应该认真真分析研研究多任任务和多多进程会会不会发发生冲突突,同步步所有的的进程和和任务以以避免冲冲突。 同时作作为结构构化的编编程, 每个原原子化组组件都要要保证一一个入口口和一个个出口。如如果进程程之间需需要交互互,则这这些交互互操作应应同步。对对于每一一种可能能的交互互情况都都要考虑虑相关的的安全策策略。3.6 界面输出出最小化化软件应保保持用户户界面只只提供必必须的功功能,没没有多余余的、不不必要的的功能,确确保用户户
28、不能通通过用户户界面直直接访问问数据或或者直接接访问被被保护对对象。3.7 使代码简简单、最最小化和和易于修修改开发时应应尽量使使代码简简单、最最小化和和易于修修改。使使用结构构化的编编程语言言,尽量量避免使使用递归归和 GGotoo 声明明。使用用简单的的代码,清清除不必必要的功功能,防防止采用用信息隐隐藏方式式进行数数据保护护。3.8 避免高危危的服务务、协议议软件应尽尽量避免免使用不不加保护护的及已已被证明明存在安安全漏洞洞的服务务和通信信协议传传输文件件,如FTPP 、SMTTP。3.9 数据和代代码分离离软件应该该把数据据与程序序放置在在不同的的目录中中,这里里的数据据包括远远程下载
29、载文件等等。3.10 关键数据据传输保保护1. 软件在传传输关键键数据时时,使用用加密算算法保证证数据在在通信过过程不被被破译,使使用数字字签名保保证数据据在传输输过程中中的一致致性和不不可否认认性。相相关的加加密算法法和签名名技术等等应符合合国家相相关法律律法规要要求。2. 信息隐藏藏是不可可靠、 效率低低的做法法,软件件应该使使用正确确的安全全保护措措施,不不要依赖赖隐藏进进行数据据保护。3.11 禁止赋予予用户进进程特权权用户进程程的授权权应采用用最小授授权法,对对于软件件的普通通用户进进程,禁禁止赋予予该类进进程特权权用户权权限。特特权用户户类型包包括:1. 超级用户户。2. 直接操作
30、作数据库库用户。3. 安全管理理用户。 3.12 使用适当当的数据据类型应该小心心使用数数据类型型,尽量使使用占用用内存较较小的数数据类型型,如可可用整型型数据的的不用实实型,特特别是在在程序接接口部分分。例如如,在一一些编程程语言中中siggnedd 和 unssignned 的数据据类型是是视为不不同的(如如C或者者C+语言)。3.13 使用经过过验证的的安全代代码使用经过过验证的的安全代代码模块块和外部部源程序序,防止止潜在的的安全风风险。3.14 使用应用用中间件件中间件作作为一种种应用层层架构,软软件设计计应尽可可能使用用中间件件,中间间件选型型时应选选择成熟熟的、业业界主流流的中间
31、间件产品品。3.15 设计错误误、 异异常处理理机制软件设计计开发时时应建立立防止系系统死锁锁的机制制,异常常情况的的处理和和恢复机机制,具体包包括错误误和异常常检测、数数据回滚滚、安全全错误通通知、错错误和异异常记录录、断点点保护等等。3.16 提供备份份机制为保证运运行数据据的完整整性和可可用性,软软件开发发应设计计有效的的备份策策略,根根据业务务和系统统维护需需要提供供定期或或不定期期、自动动或手动动方式的的备份机机制。3.17 检查传递递变量的的合法性性应检查所所有传递递给系统统函数调调用(SSysttem Callls)或本地地调用(NNatiive Callls)的变量的合法性。3
32、.18 检查所有有函数返返回代码码应检查所所有函数数调用返返回代码码(错误误代码),对对每个期期望的返返回值设设置相应应的处理理程序。3.19 修改面向向用户的操作的反馈缺缺省描述述应对面向向用户的的操作的的反馈缺缺省描述述进行必必要的封封装,删删除有关关后台系系统或其其它敏感感信息。3.20 文件操作作的要求求在需要进进行文件件操作时时,应预预先设定定目前工工作路径径(全路路径名),使使用全路路径名表表示文件件的位置置。3.21 其他编码码原则1. 当一个进进程对敏敏感对象象(包含含秘密信信息或包包含不可可更改信信息)使使用完后后,应立立即擦除除对象的的敏感信信息,然然后再删删除对象象。任何
33、何不需要要使用的的资源应应及时释释放。2. 确保所有有用来指指示数组组下标的的数据(或或指针)都都指向了了一个有有效的数数组元素素。 如如果某个个函数不不能保证证下标所所指向元元素的有有效性,或或者根本本不去检检查边界界时,不不要使用用该函数数,应该该寻找一一个安全全的函数数,或者者自己重重新编写写一个或或者封装装一个不不安全的的函数,加加上必要要的判断断条件,使使它安全全。3. 当输入不不可信任任数据时时,要在在该数据据的内容容和格式式上同时时加以检检查。对对于整数数,应该该检查数数据大小小是否超超出了能能够表示示的范围围;对于于输入的的字符串串,要确确保长度度没有溢溢出,保保证每一一个字符
34、符都是有有效的。4. 对经常使使用的类类似的 SQLL 语句句应使用用绑定变变量的方方法,避避免数据据库执行行类似 SQLL 语句句时重复复解析、重重复访问问数据文文件的行行为。5. 程序编码码结束后后,应对对代码进进行优化化,提高高应用处处理 SSQL 的性能能。6. 禁止使用用通配符符的方式式进行数数据的插插入操作作。7. 采用数据据库作为为系统间间接口方方式时,应应建立独独立的接接口表,并并按最小小化特权权原则进进行授权权。4 应用安全全分析4.1 安全需求求系统安全全本质上上属于信信任问题题,要保保证应用用安全,就就必须将将解决各各种操作作过程中中不可信信问题。安全的几个基本本要素为为
35、机密性性、完整性性、可用用性、可审计计性、不不可抵赖赖性等方方面的安安全要求求。机密性要要求保护护数据内内容不能能泄露,加密是是实现机机密性的的要求的的常见手手段。完整性要要求保护护数据内内容是完完整、没没有被篡篡改的。可用性要要求保护护资源是是可被按按照需要要访问。可审计性性对出现现的安全全问题提提供调查查的依据据和手段段。不可抵赖赖性建立立有效的的责任机机制,防防止用户户否认其其行为。4.2 安全威胁胁4.2.1 Web安安全漏洞洞根据结合合国网系系统安全全检测项项目常见见安全问问题及OOWASSP组织织发布的的安全漏漏洞,系统中中存在的的需要解解决的安安全风险险如下:序号安全威胁胁产生环
36、节节1SQL注注入编码2失效的身身份认证证及会话话管理设计、编编码3跨站脚本本(XSSS)编码4点击劫持持(CllickkJacckinng)编码4不安全的的直接对象象引用编码5安全配置置错误配置实施施6敏感信息息泄露设计、编编码7功能级访访问控制制缺失(失败的URL访问权限限制)设计8跨站请求求伪造(CCSRFF)编码9使用含有有已知漏漏洞的组组件管理、设设计10未验证的的重定向向和转发编码11传输层保保护不足足设计、编编码12文件上传传漏洞编码13不安全的的加密存存储设计、编编码4.2.2 拒绝服务务攻击分布式拒拒绝服务务攻击(英英文:DDisttribbuteed DDeniial of
37、 Serrvicce,缩缩写:DDDoSS)亦称称洪水攻攻击。顾顾名思义义,即是是利用网网络上已已被攻陷陷的电脑脑作为“僵尸”,向某某一特定定的目标标电脑发发动密集集式的“拒绝服服务”式攻击击,用以以把目标标电脑的的网络资资源及系系统资源源耗尽,使使之无法法向真正正正常请请求的用用户提供供服务。黑黑客通过过将一个个个“丧尸”或者称称为“肉鸡”组成僵僵尸网络络,就可可以发动动大规模模DDooS或SSYN洪洪水网络络攻击,或或者将“丧尸”们组到到一起进进行带有有利益的的刷网站站流量、EEmaiil垃圾圾邮件群群发,瘫瘫痪预定定目标受受雇攻击击竞争对对手等商商业活动动。4.2.3 嗅探攻击击利用计算
38、算机的网网络接口口截获目目的地为为其他计计算机的的数据报报文的一一种技术术。它工工作在网网络的底底层,把把网络传传输的全全部数据据记录下下来. 嗅探器器可以帮帮助网络络管理员员查找网网络漏洞洞和检测测网络性性能。嗅探器器可以分分析网络络的流量量,以便找找出所关关心的网网络中潜潜在的问问题。证明你的的网络有有嗅探器器有两条条经验:1. 网络通讯讯丢包率率非常高高:通过过一些网网管软件件,可以以看到信信息包传传送情况况,最简简单是ppingg命令。它它会告诉诉你掉了了百分之之多少的的包。如如果你的的网络结结构正常常,而又又有200330数数据包丢丢失以致致数据包包无法顺顺畅的流流到目的的地。就就有
39、可能能有人在在监听,这这是由于于嗅探器器拦截数数据包导导致的。2. 网络带宽宽出现反反常:通通过某些些带宽控控制器,可可以实时时看到目目前网络络带宽的的分布情情况,如如果某台台机器长长时间的的占用了了较大的的带宽,这这台机器器就有可可能在监监听。应应该也可可以察觉觉出网络络通讯速速度的变变化。4.2.4 中间人攻攻击在密码学学和计算算机安全全领域中中,中间间人攻击击 ( Mann-inn-thhe-mmidddle atttackk,通常常缩写为为MITTM )是是指攻击击者与通通讯的两两端分别别建立独独立的联联系,并并交换其其所收到到的数据据,使通通讯的两两端认为为他们正正在通过过一个私私密
40、的连连接与对对方直接接对话,但但事实上上整个会会话都被被攻击者者完全控控制。在在中间人人攻击中中,攻击击者可以以拦截通通讯双方方的通话话并插入入新的内内容。在在许多情情况下这这是很简简单的(例例如,在在一个未未加密的的Wi-Fi 无线接接入点的的接受范范围内的的中间人人攻击者者,可以以将自己己作为一一个中间间人插入入这个网网络)。一个中间间人攻击击能成功功的前提提条件是是攻击者者能将自自己伪装装成每一一个参与与会话的的终端,并并且不被被其他终终端识破破。中间间人攻击击是一个个(缺乏乏) 相相互认证证的攻击击。大多多数的加加密协议议都专门门加入了了一些特特殊的认认证方法法以阻止止中间人人攻击。例
41、例如,SSSL协协议可以以验证参参与通讯讯的一方方或双方方使用的的证书是是否是由由权威的的受信任任的数字字证书认认证机构构颁发,并并且能执执行双向向身份认认证。4.3 安全约束束序号限制1外网不允允许部署署数据库库2外网仅提提供HTTTP、HHTTPPS访问问,不提供等3外网访问问内网必必须通过过强隔离离装置,仅支持TNNS协议议(国网网系统要要求)4外网应用用不允许许直接访访问内网网关键业业务系统统数据库库5其它系统统原则上上都不允许许直接连连接营销销系统数数据库5 安全编程程要求5.1 输入处理理5.1.1 建立可信信边界需要在程程序中定定义清晰晰的可信信边界。 在一些些代码中中用于保存存
42、可信数数据的数数据结构构,不能能被用来来在其它它代码中中存储不不可信数数据。使使数据穿穿越可信信边界的的次数降降到最低低。当程序混混淆了可可信和不不可信数数据的界界限时会会导致安安全边界界发生问问题,最最容易导导致这种种错误的的情况是是把可信信和不可可信数据据混合在在一个数数据结构构里。如如下例:该例中程程序接受受一个 htttp 请请求并将将 uusrnnamee 参参数放在在 HTTTP sesssioon 里里, 但但是并未未检查用用户是否否被授权权。usrname =request.getParameter(usrname);if(session.getAttribute(ATTR_U
43、SR)= null)session.setAttribute(ATTR_USR,usrname);由于开发发者都知知道用户户是不能能直接访访问 ssesssionn 对象象的,所所以很容容易信任任来自 sesssioon 的的所有信信息,但但是如果果在该 sesssioon 中中混合存存储了可可信和不不可信的的数据, 就会违违反完全全可信边边界的原原则,带带来安全全隐患。如如果不能能很好的的建立和和维护可可信边界界,开发发者将不不可避免免的混淆淆未被验验证和已已验证的的数据,从从而导致致一些数数据在未未经验证证时就被被使用。如如果输入入的数据据在处理理前通过过一些用用户的交交互发生生了改变变,
44、 可可信边界界就会遇遇到一定定的问题题,因为为它很可可能在所所有数据据进入之之前不能能做出完完全的输输入验证证。在这这种情况况下,维维护一个个可信的的边界就就尤为重重要,不不可信数数据应该该单独存存放在专专门存放放不可信信数据的的数据结结构内,在在经过验验证之后后才被放放在可信信区域。 这样在在看一段段代码时时,就很很容易识识别数据据是在可可信边界界的哪一一侧。5.1.2 验证各种种来源的的输入不要将软软件的安安全性寄寄托在配配置、使使用和维维护人员员的敏锐锐理解力力、深刻刻洞察力力或良好好意愿上上,不仅仅需要验验证用户户输入,而而且还要要验证所所有来自自于软件件之外的的输入,这这些输入入应当
45、包包括下列列内容,但但并不仅仅仅局限限于此:1. HTTPP 请求求消息的的全部字字段,包包括 GGET 数据、 POSST 数数据、 COOOKIEE 和 Heaaderr 数据据等。2. 不可信来来源的文文件。3. 第三方接接口数据据。4. 从数据库库中检索索出的数数据。5. 对来自命命令行、 环境以以及配置置文件的的输入。6. 网络服务务。7. 注册表值值。8. 系统性能能参数。9. 临时文件件。 5.1.3 保证所有有的输入入信息是是被验证证过的确保在输输入验证证之前,新新输入的的数据不不能被添添加到程程序中(输输入的数数据不能能进入程程序代码码中被执执行)。也也就是说说,程序序默认情情况下要要对所有有的输入入信息进进行验证证,不能能通过验验证的数数据将会会被拒绝绝。5.1.4 对输入内内容进行行规范化化处理后后再进行行验证当输入数数据包含