论文部分内容阅读
摘要:本文介绍了ASP.NET应用程序中的两种常用的身份验证的方法。给出了两种方法的实现,并对其特点进行了分析和比较。
关键词: ASP.NET;身份验证;网络安全
中图分类号:TP393文献标识码:B文章编号:1009-3044(2007)04-10891-01
1 引言
ASP.NET提供四种用户验证方式:Windows身份验证、窗口身份验证、Passport验证以及IIS身份验证。可在虚拟目录的web.config文件中指定此应用程序或目录的验证类型,代码示例如下。
这里对前两种方式进行介绍和比较。
2 Windows身份验证
IIS通过基本验证、摘要验证或集成Windows验证进行初始验证。并用此账户访问请求的资源。验证必须使用Windows中已建立的本地账户。
使用Windows身份验证时,可用元素打开模仿,使用户使用它们用来登陆的账户进行资源访问。
roles和users属性至少要有一项,多个角色或者用户可用逗号隔开。而verb属性是可选的。在不同的程序或目录中配置web.config文件,便可以限定用户对于资源的访问权限。
可用”*”号表示所有的角色、用户或谓词,”?”号表示“匿名访问”的用户。如配置有多个web.config文件,则离应用程序文件最近的一个配置将覆盖上级目录中配置文件中的重复项。
当程序找到第一个匹配时并不停止处理,而是遍历所有的项,直到找到最好的选择。因此可使用来允许角色访问,而使用拒绝角色中特定用户访问。
在IIS管理工具中,将目录属性中的“允许匿名”前的勾号去掉,然后在下方选择验证的方法:基本验证、摘要验证,或集成Windows验证。
3 窗口身份验证
用户通过程序提供的窗口提交证书,如果应用程序验证成功,则系统发出包含证书的cookie,用户在保留此cookie期间可访问应用程序。其典型的web.config配置如下:
其中:
(1)name:cookie的名称
(2)path: cookie的有效路径,通常设为“/”来表示整站。
(3)loginurl:登陆页面地址
(4)protection:cookie保护级别,All-使用数据验证和加密;None-不保护;Encryption-仅执行加密;Validation-仅执行数据验证。
(5)timeout:cookie过期时间,单位是分钟。
(6)requieSLL:是否强迫使用SSL。强烈建议使用SSL。
元素为可选项,表明用户密码加密的算法,并列出可访问受保护资源的用户及密码。也可以使用数据库或XML等形式存储用户和密码,并编写代码进行读取和验证。建议不储存明文密码,而储存它们的Hash形式的数据。
元素指定对cookie进行加密的密匙的生成方法。一般指定为自动生成。
虽然ASP.NET已经为我们作了绝大部分的工作,但是用户仍然要编写代码来完成Form形式的验证。处理基于窗体验证的类是FormsAuthentication类,位于System.Web.Security命名空间。可参考MSDN中的详细说明。
注意:窗口验证中的资源权限管理,只适用于由ASP.NET管理的资源,如果要保护其他类型的资源,如文本、图片等,可采取在IIS中添加文件映射的方法。
4 总结比较
Windows身份验证仍存在着帐户劫持、信息泄露等威胁。但是,在配置合理的情况下,有着比窗口认证更高的可靠性和更小的攻击面。并且对于用户的权限设置有着更大的自由度。然而,倘若配置不当,或者基于不安全的网络配置,使得帐户泄露,可能导致灾难性的后果。由于帐户必须是存在的Windows帐户,使得其只适用于企业内网或者用户相对固定的网络。而窗口验证适用于用户群庞大或开放注册的环境,如大型社区、论坛等等。但是窗口验证方式可能受到的攻击和威胁要比Windows身份验证要多的多,如SQL注入、跨站点脚本攻击、信息泄露等等。
参考文献:
[1]Alex Homer,Dave Sussman.等.著.李敏波.译.ASP.NET高级编程[M].清华大学出版社,614-675.
[2]Mark M.Burnett.著.良忠.译.Hacking The Code:ASP.NET Web Application Security[M].电子工业出版社,47-64.
[3]张彬,张浩.ASP.NET应用程序安全缺陷及分析[J].信息技术,2006,3.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词: ASP.NET;身份验证;网络安全
中图分类号:TP393文献标识码:B文章编号:1009-3044(2007)04-10891-01
1 引言
ASP.NET提供四种用户验证方式:Windows身份验证、窗口身份验证、Passport验证以及IIS身份验证。可在虚拟目录的web.config文件中指定此应用程序或目录的验证类型,代码示例如下。
这里对前两种方式进行介绍和比较。
2 Windows身份验证
IIS通过基本验证、摘要验证或集成Windows验证进行初始验证。并用此账户访问请求的资源。验证必须使用Windows中已建立的本地账户。
使用Windows身份验证时,可用元素
roles和users属性至少要有一项,多个角色或者用户可用逗号隔开。而verb属性是可选的。在不同的程序或目录中配置web.config文件,便可以限定用户对于资源的访问权限。
可用”*”号表示所有的角色、用户或谓词,”?”号表示“匿名访问”的用户。如配置有多个web.config文件,则离应用程序文件最近的一个配置将覆盖上级目录中配置文件中的重复项。
当程序找到第一个匹配时并不停止处理,而是遍历所有的项,直到找到最好的选择。因此可使用
在IIS管理工具中,将目录属性中的“允许匿名”前的勾号去掉,然后在下方选择验证的方法:基本验证、摘要验证,或集成Windows验证。
3 窗口身份验证
用户通过程序提供的窗口提交证书,如果应用程序验证成功,则系统发出包含证书的cookie,用户在保留此cookie期间可访问应用程序。其典型的web.config配置如下:
其中:
(1)name:cookie的名称
(2)path: cookie的有效路径,通常设为“/”来表示整站。
(3)loginurl:登陆页面地址
(4)protection:cookie保护级别,All-使用数据验证和加密;None-不保护;Encryption-仅执行加密;Validation-仅执行数据验证。
(5)timeout:cookie过期时间,单位是分钟。
(6)requieSLL:是否强迫使用SSL。强烈建议使用SSL。
虽然ASP.NET已经为我们作了绝大部分的工作,但是用户仍然要编写代码来完成Form形式的验证。处理基于窗体验证的类是FormsAuthentication类,位于System.Web.Security命名空间。可参考MSDN中的详细说明。
注意:窗口验证中的资源权限管理,只适用于由ASP.NET管理的资源,如果要保护其他类型的资源,如文本、图片等,可采取在IIS中添加文件映射的方法。
4 总结比较
Windows身份验证仍存在着帐户劫持、信息泄露等威胁。但是,在配置合理的情况下,有着比窗口认证更高的可靠性和更小的攻击面。并且对于用户的权限设置有着更大的自由度。然而,倘若配置不当,或者基于不安全的网络配置,使得帐户泄露,可能导致灾难性的后果。由于帐户必须是存在的Windows帐户,使得其只适用于企业内网或者用户相对固定的网络。而窗口验证适用于用户群庞大或开放注册的环境,如大型社区、论坛等等。但是窗口验证方式可能受到的攻击和威胁要比Windows身份验证要多的多,如SQL注入、跨站点脚本攻击、信息泄露等等。
参考文献:
[1]Alex Homer,Dave Sussman.等.著.李敏波.译.ASP.NET高级编程[M].清华大学出版社,614-675.
[2]Mark M.Burnett.著.良忠.译.Hacking The Code:ASP.NET Web Application Security[M].电子工业出版社,47-64.
[3]张彬,张浩.ASP.NET应用程序安全缺陷及分析[J].信息技术,2006,3.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。