科技情报开发与经济 文章编号: 1005- 6033 2008) 05- 0173- 01 (
SCI- TECH INFORMATION DEVELOPMENT & ECONOMY
2008 年
第 18 卷
第5期
收稿日期: 2007- 12- 27
基于 ASP.NET 应用程序的安全性
李 伟
( 太原理工大学计算机与
软件工程, 山西太原, 030024) 摘 要: ASP.NET 作为微软的 .NET 构架中的一部分, 业已成为主流开发工具。 主要研究
了 ASP.NET 的安全性基础以及实现 ASP.NET 应用程序安全的方法和措施。 关键词:
网络安全; 应用程序; 安全性
设计; ASP.NET 中图分类号: TP393.08 文献标识码: A
使 用 的 身 份 验 证 类 型 , 一 般 可 选 择 集 成 Windows 身 份 验 证 类 型 , 它 是 最 容易实现的。
1 ASP.NET 安全性的实现基础
ASP.NET 和 IIS 为 Web 应用程序安全提供了一个基础结构, 可 以 利
用 .NET 安全架构的内置特性来保证应用程序的安全性。 .NET 安全架构 授权、 基于角色的授权、 模拟、 密 包含很多类, 这些类用户处理身份验证、 码术和代码访问安全。 其中 ASP.NET 的几个关键的安全过程包括身份验 证、 授权、 模拟 3 个要素, 是安全性实现的基础。
2.2
使用表单身份验证 在 Internet 中, 使用表单身份验证, 登录用户为存在于数据库中的用
户信息。即使在 IIS 中设定客户端可以进行匿名访问 , 在 ASP.NET 中 可 以进行设置以实现在应用程序内部进行客户端的身份验证和授权, 可以 通过使用表单身份验证来实现。它的主要思想是利用重定向功能将客户 端发送的未经过验证的请求重定向到某一特定页, 用户在该页上提交用 户凭据。如果该凭据被验证并授权, 则应用程序发出一包含用于获取用 户身份的密匙 作为 Cookie 发 送 到 客 户 端 , 称 为 身 份 验 证 票) 的 表 单 称 ( ( 为身份验证表单) , 然后重定向到用户原始请求的页上。当用户在同一会 话中再次请求页时, 请求头中将包含身份验证表单以再次验证和授权。
1.1
身份验证 身份验证的目的在于确认客户端的身份。在身份得到验证后, 授权
进程将确定该身份是否可以访问给定资源。 ASP.NET 身份验证分为两个 步 骤 。 首 先 , Internet 信 息 服 务( IIS) 对 用 户 进 行 身 份 验 证 , 并 创 建 一 个
Windows 令牌来表示该用户。 II
S 通过查看 IIS 元数据库设 置 , 确 定 应 该
对特定应用程序使用的身份验证模式。如果 IIS 配置为使用匿名身份验 证, 则为 IUSR_MACHINE 账户生成一个令牌并用它表示匿名用户。然 后 , IIS 将 该 令 牌 传 递 给 ASP.NET。 其 次 , ASP.
NET 执 行 自 己 的 身 份 验 证。所使用的身份验证方法由 authentication 元素的 mode 属性指定。
2.3
使用 PassPort 身份验证
PassPort 认证是由 Microsoft 提供的集中身份验证服务, 其
工作原理
与 forms 认证相似, 都需要在客户端创建认证 cookies 。 它为参与的站点提 供单一的登录程序和成员服务。 要在 ASP.NET 应用程序中使用某种指定 的身份验证提供程序, 必须在应用程序配置文件中创建如下项:
1.2
授权 有 两 种 基 本 方 式 来 授 予 对 给 定 资 源 的 访 问 权 限 : 文 件 授 权 和 URL
// web.config 文件
“ <authentication mode= [ Windows/Cookie/Passport/None] ” >
授权。 ASP.NET 依赖 Windows 指出通过认证的用户可以访问哪些资源, 称为文件授权。如果依赖被请求资源的 URL, 则被称为 URL 授权。授权 的目的是确定是否应该授予某个标志对给定资源请求的访问权限类型。
</authentication>
在最新的 ASP.NET2.0 中主要提供 Windows 和 Forms 这 两 种 验 证 方 式。
1.3
模拟 在默认情况下, 模拟是被禁止的。使用模拟时, ASP.NET 应用
程序依
赖 于 IIS 来 验 证 用 户 , 然 后 将 通 过 验 证 的 标 记 传 递 给 ASP.NET 应 用 程 序; 或者, 如果无法验证用户, 则传递未经身份验证的标记。以此来限制 用户权限。模拟需在
web.config 代码中加入: “ “ “ <identity impersonate = true ” username= true ” password= pw” />