每天积累一点,才会成长......

ASP.NET安全性
输入安全性
身份验证
授权
ASP.NET模拟
存储机密
使用加密
ASP.NET安全使用最佳实践

输入安全性
1,验证所有的输入:一般情况下使用asp.net的验证控件,其他情况下使用正则表达式(e.g.,web server 参数)。
2,对于输出的数据要加密。
3,使用参数化的存储过程和查询语句。

身份验证:
身份验证是指以下过程:获取标识凭据(如用户名和密码),并对照某一颁发机构来验证这些凭据。
ASP.NET 提供了四个身份验证提供程序:
– 表单身份验证
– Windows 身份验证
– Passport 身份验证
– 默认身份验证

授权
授权是指验证经身份验证的用户是否可以访问请求资源的过程。
ASP.NET 提供以下授权提供程序:
– FileAuthorization:FileAuthorizationModule 类进行文件授权,而且在使用Windows 身份验证时处于活动状态。
– UrlAuthorization:UrlAuthorizationModule 类进行统一资源定位器(URL) 授权,它基于URI 命名空间来控制授权。URI 命名空间可能与NTFS 权限使用的物理文件夹和文件路径存在很大的差异。

ASP.NET身份模拟:
缺省情况下,ASP.NET应用程序以本机的ASPNET帐号运行,该帐号属于普通用户组,权限受到一定的限制,以保障ASP.NET应用程序运行的安全。但是有时需要某个ASP.NET应用程序或者程序中的某段代码执行需要特定权限的操作,比如某个文件的存取,这时就需要给该程序或相应的某段代码赋予某个帐号的权限以执行该操作,这种方法称之为身份模拟(Impersonation)。
在ASP.NET应用程序中使用身份模拟一般用于资源访问控制,主要有如下几种方法:
模拟IIS认证帐号:
<IDENTITY impers />
在某个ASP.NET应用程序中模拟指定的用户帐号
<IDENTITY impers
userName="accountname" password="password" />  


存储机密:
Web 应用程序通常需要存储机密。需要妥善保管这些机密,以防止不道德的管理员和有恶意的Web 用户进行访问。
机密的典型示例包括:
SQL 连接字符串。一个常见的错误是以纯文本形式存储用户名和密码。
Web.config 中的固定标识。
1,Machine.config 中的进程标识。
2,用于安全地存储数据的密钥。
3,用于根据数据库进行表单身份验证的密码。

在ASP.NET 中存储机密的选项:
NET Web 应用程序开发人员可以使用多种方法来存储机密。
它们包括:
.NET 加密类。.NET 框架包含可用于加密和解密的类。这些方法要求安全地存储加密密钥。
数据保护API (DPAPI)。DPAPI 是一对Win32 API,它使用从用户密码派生的密钥对数据进行加密和解密。在使用DPAPI 时,您并不需要进行密钥管理。操作系统对作为用户密码的密钥进行管理。
COM+ 构造函数字符串。如果应用程序使用服务组件,则可以在对象构造字符串中存储机密。该字符串以明文形式存储在COM+ 目录中。
CAPICOM。这是一个Microsoft COM 对象,它提供对基础加密API 基于COM 的访问。
加密API。这些API 是执行加密和解密的低级Win32 API。

使用加密:
使用名称空间
System.Security.Cryptography:该命名空间提供加密服务,包括安全的数据编码和解码,以及许多其他操作,例如散列法、随机数字生成和消息身份验证。
使用RNGCryptoServiceProvider,代替System.Random。

posted on 2009-04-18 22:43  wenbo  阅读(311)  评论(0编辑  收藏  举报