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 敏感数据操作异常要求 . 5 9 其
2、他 . 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 规定如何在组织或系统中管理、保护、分发包括敏感信息在内的资产的规则、命令、条例。 HS/T 22-
6、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 20984-2
8、007,定义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。 N B C U S 代码安全性要求 低 高 图1 各类代码的安全性要求 4 代码安全性声明要求 下列情景应采用该方式定义代码访问权限: a) 对已明确需要增加访问权限控制的代码,声明采用最小权限; b) 涉及表1所列权限,应在代码中明确声明; c) 所有互操作调用应显式声明需要访问非
10、托管代码; d) WCF访问中,为了提高代理类的安全性,应采用代码声明安全。 表1 敏感代码权限表 权限 说明 SecurityPermission 一般性安全访问要求。 UnmanagedCode 允许托管代码调用非托管代码。 SkipVerification 如果没有验证,代码可以进行任何操作。 ControlEvidence 允许采用失效的证据欺骗安全策略。 ControlPolicy 允许修改安全策略,也可禁用安全性。 SerializationFormatter 可通过序列化规避代码访问安全性机制。 ControlPrincipal 可设置当前主体身份进而欺骗基于角色的安全。 Con
11、trolThread 可控制与线程关联的安全状态。 ReflectionPermission 允许通过反射获得系统安全策略要求及其它敏感业务信息。 MemberAccess 可使私有成员可访问性机制无效。 S、U类代码应采用,C类代码宜采用,B、N类代码可采用。 示例参见附录A的A.1。 HS/Z XXXXXX 4 5 中间结果和状态信息处理要求 S、U、B类代码中类型的实例状态应声明为private,对于C类代码最大限度声明为internal。具体 要求如下: a) 为了防止通过继承获得访问,包括敏感信息的类声明为sealed; b) 敏感状态信息严禁声明为protected; c) 除非有
12、特殊网络保护,严禁将包括敏感状态信息的类声明为可序列化; d) 运行环境统一使用发布(Release)版本的程序集。 S、U、C、B类代码应采用,N类代码宜采用。 示例参见附录A的A.2。 6 限制方法调用要求 类型实例方法访问控制应用中应按照安全性要求高低,采用表2中所列访问控制符。 表2 安全性要求与访问控制符对应关系表 访问控制符 说明 安全性要求 public 访问不受限制。 低 protected 访问仅限于包含类或从包含类派生的类型。 中 internal 访问仅限于当前程序集。 高 protected internal 访问仅限于当前程序集或从包含类派生的类型。 高 privat
13、e 访问仅限于包含类型。 最高 为确保调用过程的安全性,应对方法调用做如下限制: a) 涉及敏感资源的调用,应对调用者身份进行检查; b) 涉及敏感资源的调用,应对调用者权限进行检查; c) 涉及调用敏感资源的类型应明确其子类必须具有何种身份或者权限; d) 涉及调用敏感资源的类型定义虚方法时应限制其子类的身份或权限要求; e) 最终业务实体类应禁止被子类继承(sealed)。 S、U、C类代码应采用,B类代码宜采用,N类代码可采用。 示例参见附录A的A.3。 7 遗留系统代码封装要求 下列情形应在封装遗留系统代码时进行安全检查: a) 后绑定方式调用COM+; b) 直接引用既有系统组件(C
14、OM+、.Net 1.1、Java Applet等); c) 直接调用操作系统本地API; 调用相关系统ActiveX控件。 U类代码应采用。 示例参见附录A的A.4、A.5。 HS/Z XXXXXX 5 8 敏感数据操作异常要求 如控制不当,应用异常易造成敏感信息泄漏。为此,应在相关处理过程进行限制,防止敏感信息及 过度的技术信息泄漏。异常处理流程如图2。 出现异常 是否为应用自 身相关异常? 抛出异常 完成 是否需要审 计? 记录审计信息 是否需要替换 敏感信息? 替换敏感信息 抛出异常 否 是 是 否 否 是 图2 异常处理流程 异常处理流程应遵循如下原则: a) 对于非应用自身相关异常
15、直接抛向上层逻辑; b) 对于需要审计的错误环节或错误类型,应先写审计日志; c) 写审计日志过程中如出现异常不应回滚操作,应将异常同时记录; d) 如异常存在嵌套结构,应记录异常完整的嵌套结构; e) 如异常中涉及敏感错误信息应先对错误信息替换,并抛出已替换敏感信息的异常。 S类代码应采用,B类代码宜采用,C、U、N类代码可采用。 示例参见附录A的A.6。 9 其他要求 应用开发中还应实施如下安全编码措施: HS/Z XXXXXX 6 a) 应始终对用户输入的信息进行必要的安全检查; b) 应使用 checked 关键字检查算术运算溢出; c) 应始终对参数使用贴切的数据类型; d) 应验证
16、用于生成SQL语句的各类参数; e) 应使用海关统一要求的安全组件完成加密、签名功能; f) 应为程序集指定强名称; g) 不应在除审计日志以外的其他任何日志中保留敏感信息; h) 不应在 XML 或其他配置文件中存储敏感信息; i) 应对涉及敏感信息的代码补充安全注释,说明安全要求和处理规范; j) 不应将密码或其他敏感信息编码到应用程序中。 HS/Z XXXXXX 7 A A 附 录 A (资料性附录) 安全编码示例 A.1 代码访问安全性示例 对已明确需要增加访问权限控制的代码,声明采用最小权限。 示例1: 程序集级文件访问权限声明: C# using System.Security.P
17、ermissions; 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 ChinaCustoms.Training.Guidline.S
18、ecurity 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 previously created. using
19、(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:SecurityPermissionAttribute(Securi
20、tyAction.RequestMinimum, Flags = SecurityPermissionFlag.UnmanagedCode) namespace ChinaCustoms.Training.Guidline.Security using System; using System.Runtime.InteropServices; WCF调用中,为了提高代理类的安全性,宜采用代码声明安全。 示例4: WCF中声明只有完全信任的类型可调用WCF服务: C# assembly: AllowPartiallyTrustedCallers ServiceContract public in
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HS 33-2011 .NET安全编码规范 33 2011 NET 安全 编码 规范
