Security in C# Network Programming

C#网络编程之安全相关

 

C#网络编程安全相关有三个层面内容:一是应用程序安全(Application Security)层面,一是套接字权限(Socket Permission)层面,一是数据传输(Data Transfer)层面。

 

(一)应用程序安全层面

DotNet CLR为运行在其上的应用程序提供了很多安全特性,利用这些特性,可以控制谁可以,谁不可以在其上运行应用程序。在应用程序安全层面又包含三方面的内容:安全策略(Security Policies),安全组(Security Groups),安全权限(Security Permissions)DotNet提供了caspol.exe命令行工具和mscorcfg.msc图形界面工具来配置管理安全策略,具体查看帮助。

 

1)安全策略

DotNet框架严格控制在其上运行的应用程序的安全策略。这些安全策略决定应用程序能够怎样在其上运行和访问资源。安全策略是系统管理员配置的一系列规则,所有运行在CLR上的受控代码(managed code)受安全策略约束。有四个层次的安全策略,由上至下约束渐少。

·         Enterprise-level policies

·         Machine-level policies

·         User-level policies

·         Application domain policies

2)安全组

可以应用安全组来定义适用于一系列应用程序集合的安全策略。基于应用程序的特征来建立组,例如应用程序的创建者,应用程序的初始位置等。组的成员可以重叠。

 

3)安全权限

根据安全策略,控制允许还是禁止应用程序访问受限资源。(理解的不清楚,待研)

 

(二)套接字权限层面

利用套接字权限可以使服务端拒绝未授权的客户端的访问,或者使客户端程序不能访问未授权的服务端程序。实现这样的功能,可以应用SocketPermission and/or SocketPermissionAttribute类来实现。这两个类可以实现声明式(Declarative)或者强迫式(Imperative)的安全。声明式的安全利用SocketPermissionAttribute类,这种方法在应用程序的元数据中定义了限制信息(用法关键就是C#Attributes的用法,查看帮助)。强迫式的安全利用SocketPermission类实现,先创建一SocketPermission对象,然后赋予一定的限制策略(查看帮助)。

 

(三)数据传输(Data Transfer)层面

网络传输中的数据如果以明文传输的话,会有安全隐患,对数据进行加密可以一定程度解决这个问题。加密算法分对称式(Symmetric)和非对称式(Asymmetric)。对称式加密和解密采用相同的密钥(key),密钥称为私钥(Private key),这种加密方式也称为私钥加密(Private Key Encryption)。非对称式加密和解密采用不同的密钥,根据不同的应用加密和解密采用的密钥或者为公钥或者为私钥。网络编程数据传输一般采用对称式加密。非对称加密用在数字证书,数字签名等领域。DotNet提供的加密解密的类在System.Security.Cryptography 名称空间下。(例如:TripleDESCryptoServiceProvider,会一个就全会了,具体查看帮助)

 

posted on 2004-07-12 21:50  星星之火  阅读(867)  评论(0编辑  收藏  举报

导航