HS∕T 33-2011 .NET安全编码规范(海关).pdf
《HS∕T 33-2011 .NET安全编码规范(海关).pdf》由会员分享,可在线阅读,更多相关《HS∕T 33-2011 .NET安全编码规范(海关).pdf(22页珍藏版)》请在咨信网上搜索。
1、ICS 35.080 L70/84 HS 中 华 人 民 共 和 国 海 关 行 业 标 准 HS/T 332011 .NET 安全编码规范 Secure coding specification for .NET 2011 - 08 - 12 发布 2011 - 10 - 01 实施 中华人民共和国海关总署 发 布 HS/Z XXXX I 目 次 前言 . II 引言 . III 1 范围 . 1 2 术语和定义 . 1 3 代码安全性分类 . 2 4 代码安全性声明要求 . 3 5 中间结果和状态信息处理要求 . 3 6 限制方法调用要求 . 4 7 遗留系统代码封装要求 . 4 8 敏感
2、数据操作异常要求 . 5 9 其他 . 5 附录A(资料性附录) 安全编码示例 . 7 A.1 代码访问安全性示例 . 7 A.2 中间结果和状态信息处理示例 . 9 A.3 限制方法调用示例 . 10 A.4 越权访问敏感信息的示意过程 . 12 A.5 遗留系统代码封装要求示例 . 13 A.6 敏感数据操作异常示例 . 14 参考文献 . 18 HS/Z XXXX II 前 言 本标准按照GB/T 1.1-2009给出的规则起草。 本标准由中华人民共和国海关总署科技发展司提出。 本标准由中华人民共和国海关总署政策法规司归口。 本标准起草单位:中华人民共和国海关总署科技发展司、全国海关信息
3、中心(全国海关电子通关中心)。 本标准主要起草人:*、*。 本标准是第一次制定。 HS/Z XXXX III 引 言 随着海关信息化的深入,.NET应用编码中的安全问题受到普遍关注。现阶段,.NET开发技术已在中国海关普遍应用,在稳步推进等级保护、分级保护的过程中,.NET编码的安全问题日益受到重视。 安全编码方法是指运用科学的编码技巧和手段, 稳妥的实现应用功能, 并针对主要编码漏洞提出有针对性的防护对策和整改措施,进而防范和化解应用编码安全风险,将风险控制在可接受的水平,为最大限度的保障信息系统安全提供技术保障。 安全编码方法作为信息安全保障工作的基础性工作和重要手段, 应贯穿于海关信息系
4、统建设、 维护过程,是海关信息系统实现安全开发的重要科学方法之一。 本标准是以海关既有.NET项目的开发、 使用情况为基础, 确定.NET应用编写过程中需要遵循并沿革的相关安全规范。 本标准编制遵循通用性原则,确定.NET安全编码的基本原则、方法、要求,而不对具体实现技巧和编码细节进行过于详尽的描述。HS/Z XXXXXX 1 .NET 安全编码规范 1 范围 本标准给出了海关信息系统实施中安全编码的原则性要求,适用于海关自建、合建、委托外部单位建设的信息系统或相关模块的开发工作。 注:本标准所指“代码”包括生产代码、测试程序代码、工具代码以及用于调试和维护的其他代码。如没有特别说明,本标准中
5、提及的“应用”其含义均为“.NET应用”,本标准中提及的“项目”其含义均为“.NET项目”。本标准提及的“敏感信息”的界定应依据海关相关管理规定。 2 术语和定义 下列术语和定义适用于本文件。 2.1 公共库代码 common library 专门用于项目间共享使用的程序库代码。 2.2 程序集 assembly .NET应用程序编译结果的存储形式。 所有托管类型和资源都包含在某个程序集内, 并被标记为只能在该程序集的内部访问,或者被标记为可以从其他程序集中的代码访问。 2.3 安全策略 security policy 规定如何在组织或系统中管理、保护、分发包括敏感信息在内的资产的规则、命令、
6、条例。 HS/T 22-2009, 定义3.5.10 2.4 代码访问安全性 code access security (CAS) 公共语言运行时提供的一种机制,通过该机制,安全策略授予托管代码权限,并且这些权限是强制的,从而帮助限制允许代码执行的操作。 2.5 视窗通信基础 windows communication foundation(WCF) 一种 Windows 托管技术,用于生成并管理面向服务的系统。 2.6 序列化 serialization HS/Z XXXXXX 2 将对象的状态信息转换为可以存储或传输的格式的过程。 注:在序列化期间,对象将其当前状态写入到临时或持久性存储区
7、。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。 2.7 方法 method 描述行为的函数。 2.8 证据 evidence 标识代码所用安全策略的属性。 注:如数字签名或其原位置的区域或站点,安全策略使用其为代码授予权限。 2.9 信息系统 information system 由计算机及其相关的和配套的设备、设施(含网络)构成的,按照一定的应用目标和规则对信息进行采集、加工、存储、传输、检索等处理的人机系统。 典型的信息系统由三部分组成:硬件系统(计算机硬件系统和网络硬件系统);系统软件(计算机系统软件和网络系统软件);应用软件(包括由其处理、存储的信息)。 GB/T
8、 20984-2007,定义3.8 2.10 托管代码 managed code 由公共语言运行库环境执行的代码。 2.11 非托管代码 unmanaged code 直接由操作系统执行的代码。 2.12 遗留系统 legacy system 采用旧版本技术或.NET异构平台技术建设的信息系统。 3 代码安全性分类 根据安全性要求,海关.NET项目代码划分如下: a) 安全性无关的代码(N 类:Neutral):技术上可以运行于任何系统权限的代码; b) 普通的应用逻辑描述性代码(B 类:Business):实现业务逻辑、业务实体、业务流程的代码; c) 非托管代码(U 类:Unmanaged
9、):直接调用运行环境非托管资源的代码、直接调用操作系统API、本地.Lib、COM+的代码; d) 公共库代码(C 类:Common); e) 直接访问海关敏感技术资源的公共库代码(S 类:Sensitive):例如访问海关内网安全系统、活动目录、审计系统的代码。 HS/Z XXXXXX 3 同一个系统中,各类代码的安全性要求如图1。 NBCUS代码安全性要求低高 图1 各类代码的安全性要求 4 代码安全性声明要求 下列情景应采用该方式定义代码访问权限: a) 对已明确需要增加访问权限控制的代码,声明采用最小权限; b) 涉及表 1 所列权限,应在代码中明确声明; c) 所有互操作调用应显式声
10、明需要访问非托管代码; d) WCF 访问中,为了提高代理类的安全性,应采用代码声明安全。 表1 敏感代码权限表 权限 说明 SecurityPermission 一般性安全访问要求。 UnmanagedCode 允许托管代码调用非托管代码。 SkipVerification 如果没有验证,代码可以进行任何操作。 ControlEvidence 允许采用失效的证据欺骗安全策略。 ControlPolicy 允许修改安全策略,也可禁用安全性。 SerializationFormatter 可通过序列化规避代码访问安全性机制。 ControlPrincipal 可设置当前主体身份进而欺骗基于角色的
11、安全。 ControlThread 可控制与线程关联的安全状态。 ReflectionPermission 允许通过反射获得系统安全策略要求及其它敏感业务信息。 MemberAccess 可使私有成员可访问性机制无效。 S、U 类代码应采用,C 类代码宜采用,B、N 类代码可采用。 示例参见附录 A 的 A.1。 HS/Z XXXXXX 4 5 中间结果和状态信息处理要求 S、U、B类代码中类型的实例状态应声明为private,对于C类代码最大限度声明为internal。具体要求如下: a) 为了防止通过继承获得访问,包括敏感信息的类声明为 sealed; b) 敏感状态信息严禁声明为 pro
12、tected; c) 除非有特殊网络保护,严禁将包括敏感状态信息的类声明为可序列化; d) 运行环境统一使用发布(Release)版本的程序集。 S、U、C、B 类代码应采用,N 类代码宜采用。 示例参见附录 A 的 A.2。 6 限制方法调用要求 类型实例方法访问控制应用中应按照安全性要求高低,采用表2中所列访问控制符。 表2 安全性要求与访问控制符对应关系表 访问控制符 说明 安全性要求 public 访问不受限制。 低 protected 访问仅限于包含类或从包含类派生的类型。 中 internal 访问仅限于当前程序集。 高 protected internal 访问仅限于当前程序集或
13、从包含类派生的类型。 高 private 访问仅限于包含类型。 最高 为确保调用过程的安全性,应对方法调用做如下限制: a) 涉及敏感资源的调用,应对调用者身份进行检查; b) 涉及敏感资源的调用,应对调用者权限进行检查; c) 涉及调用敏感资源的类型应明确其子类必须具有何种身份或者权限; d) 涉及调用敏感资源的类型定义虚方法时应限制其子类的身份或权限要求; e) 最终业务实体类应禁止被子类继承(sealed)。 S、U、C 类代码应采用,B 类代码宜采用,N 类代码可采用。 示例参见附录 A 的 A.3。 7 遗留系统代码封装要求 下列情形应在封装遗留系统代码时进行安全检查: a) 后绑定
14、方式调用 COM+; b) 直接引用既有系统组件(COM+、.Net 1.1、Java Applet 等); c) 直接调用操作系统本地 API; 调用相关系统 ActiveX 控件。 U 类代码应采用。 示例参见附录 A 的 A.4、A.5。 HS/Z XXXXXX 5 8 敏感数据操作异常要求 如控制不当,应用异常易造成敏感信息泄漏。为此,应在相关处理过程进行限制,防止敏感信息及过度的技术信息泄漏。异常处理流程如图2。 出现异常是否为应用自身相关异常?抛出异常完成是否需要审计?记录审计信息是否需要替换敏感信息?替换敏感信息抛出异常否是是否否是 图2 异常处理流程 异常处理流程应遵循如下原则
15、: a) 对于非应用自身相关异常直接抛向上层逻辑; b) 对于需要审计的错误环节或错误类型,应先写审计日志; c) 写审计日志过程中如出现异常不应回滚操作,应将异常同时记录; d) 如异常存在嵌套结构,应记录异常完整的嵌套结构; e) 如异常中涉及敏感错误信息应先对错误信息替换,并抛出已替换敏感信息的异常。 S 类代码应采用,B 类代码宜采用,C、U、N 类代码可采用。 示例参见附录 A 的 A.6。 9 其他要求 应用开发中还应实施如下安全编码措施: HS/Z XXXXXX 6 a) 应始终对用户输入的信息进行必要的安全检查; b) 应使用 checked 关键字检查算术运算溢出; c) 应
16、始终对参数使用贴切的数据类型; d) 应验证用于生成 SQL 语句的各类参数; e) 应使用海关统一要求的安全组件完成加密、签名功能; f) 应为程序集指定强名称; g) 不应在除审计日志以外的其他任何日志中保留敏感信息; h) 不应在 XML 或其他配置文件中存储敏感信息; i) 应对涉及敏感信息的代码补充安全注释,说明安全要求和处理规范; j) 不应将密码或其他敏感信息编码到应用程序中。 HS/Z XXXXXX 7 A A 附 录 A (资料性附录) 安全编码示例 A.1 代码访问安全性示例 对已明确需要增加访问权限控制的代码,声明采用最小权限。 示例1: 程序集级文件访问权限声明: C#
17、 using System.Security.Permissions; assembly: FileIOPermissionAttribute(SecurityAction.RequestMinimum, Write = entry.txt) 示例2: 类级文件访问权限声明: C# using System; using System.IO; using System.Security.Permissions; assembly: FileIOPermission(SecurityAction.RequestMinimum, Read=entry.txt) namespace ChinaCus
18、toms.Training.Guidline.Security public class TestConsole public static void Main(string args) / Attempt to create a file using (Stream s = new FileStream(entry.txt, FileMode.Create) using (StreamWriter sw = new StreamWriter(s) sw.Write(This is some test data.); / Attempt to open the file that was pr
19、eviously created. using (Stream s = new FileStream(entry.txt, FileMode.Open) using (StreamReader sr = new StreamReader(s) Console.WriteLine(sr.ReadLine(); HS/Z XXXXXX 8 执行结果 This is some test data. 所有互操作调用应显示声明需要访问非托管代码。 示例 3: 互操作访问 H2000 COM+: C# using System.Security.Permissions; assembly:Security
20、PermissionAttribute(SecurityAction.RequestMinimum, Flags = SecurityPermissionFlag.UnmanagedCode) namespace ChinaCustoms.Training.Guidline.Security using System; using System.Runtime.InteropServices; WCF 调用中,为了提高代理类的安全性,宜采用代码声明安全。 示例 4: WCF 中声明只有完全信任的类型可调用 WCF 服务: C# assembly: AllowPartiallyTrustedCa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HST 33-2011 .NET安全编码规范海关 HS 33 2011 NET 安全 编码 规范 海关
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。