转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
ASP.NET 安全性         ★★★★

ASP.NET 安全性

作者:闵涛 文章来源:闵涛的学习笔记 点击数:6752 更新时间:2009/4/23 10:44:53
更多信息

有关窗体身份验证的详细信息,请参见本章后面的“窗体身份验证“。

有关 URL 授权的详细信息,请参见本章后面的“URL 授权注意事项”。

Passport 身份验证

以下配置元素显示了如何在 Web.config 中以声明方式启用 Passport 身份验证。

<authentication mode="Passport" />

何时使用

如果应用程序用户没有 Windows 帐户,并且您希望实现单次登录解决方案,则应该在 Internet 上使用 Passport 身份验证。如果用户以前使用 Passport 帐户在参与的 Passport 站点进行登录,则不必登录到使用 Passport 身份验证配置的站点。

返回页首返回页首

配置安全性

本节说明配置 ASP.NET Web 应用程序安全性所需的实际步骤。 3 总结了这些情况。

F08sn03_t

3. 配置 ASP.NET 应用程序安全性

配置 IIS 设置

要配置 IIS 安全性,您必须执行以下步骤:

1.

(可选)安装 Web 服务器证书(如果需要 SSL 的话)。 有关详细信息,请参见“How To Set Up SSL on a Web Server”。

2.

配置 IIS 身份验证。

3.

(可选)配置客户端证书映射(如果使用证书身份验证的话)。

有关客户端证书映射的详细信息,请参见 Microsoft 知识库文章 Q313070“How To:Configure Client Certificate Mappings in Internet Information Services (IIS) 5.0”。

4.

设置文件和文件夹的 NTFS 权限。IIS 和 ASP.NET FileAuthorizationModule 共同检查已验证用户(或匿名 Internet 用户帐户)是否具有访问所请求文件的必要权限(根据 ACL 设置)。

配置 ASP.NET 设置

应用程序级别配置设置保存在 Web.config 文件中,这些文件位于应用程序的虚拟根目录或者(可选)其他子文件夹中(这些设置有时可以覆盖父文件夹设置)。

1.

配置身份验证。应该在应用程序虚拟根目录下的 Web.config 文件中基于每个应用程序对它进行设置(而不是在 Machine.config 中)。

<authentication mode="Windows|Forms|Passport|None" />

2.

配置模拟。默认情况下,ASP.NET 应用程序不使用模拟。应用程序使用配置的 ASP.NET 进程标识(通常为 ASPNET)运行,并且应用程序执行的所有资源访问都使用此标识。仅在以下情况下需要使用模拟:

您使用 Enterprise Services,并且要使用 Enterprise Services (COM+) 角色授权访问服务组件所提供的功能。

将 IIS 配置为使用匿名身份验证,而且要使用匿名 Internet 用户帐户进行资源访问。有关此方法的详细信息,请参见本章后面的“访问网络资源”。

您需要将已验证用户的安全性上下文传递到下一层(例如数据库)。

您已将传统的 ASP 应用程序移植到 ASP.NET,并且需要同样的模拟行为。默认情况下,传统 ASP 模拟调用者。

要配置 ASP.NET 模拟,请在应用程序的 Web.config 中使用下面的 <identity> 元素。

<identity impersonate="true" />

3.

配置授权。URL 授权确定用户或角色是否可以将特定的 HTTP 谓词(例如,GET、HEAD 和 POST)发送给特定的文件。要实现 URL 授权,请执行以下任务。

1.

将 <authorization> 元素添加到应用程序虚拟根目录下的 Web.config 文件中。

2.

使用 allowdeny 属性限制对用户和角色的访问。下面的示例摘自 Web.config,它使用 Windows 身份验证并允许 Bob 和 Mary 访问,但拒绝其他人访问。

<authorization>
  <allow users="DomainName\Bob, DomainName\Mary" />
  <deny users="*" />
</authorization>

重要 您需要在 <authorization> 元素的结尾添加 <denyusers="?"> 或 <denyusers="*">,否则将给所有已验证的标识授予访问权限。

URL 授权注意事项

在配置 URL 授权时,请注意以下几点:

"*" 指所有标识。

"?" 指未通过身份验证的标识(即匿名标识)。

要使 URL 授权能够正常工作,并不需要进行模拟。

Web.config 中的授权设置通常适用于当前目录和所有子目录中的所有文件(除非子目录包含它自己的 Web.config,并且该文件包含 <authorization> 元素。在这种情况下,子目录中的设置覆盖父目录的设置)。

URL 授权只适用于由 IIS 映射到 ASP.NET ISAPI (spnet_isapi.dll) 的文件类型。

可以使用 <location> 标记将授权设置应用于个别文件或目录。下面的示例显示了如何将授权应用于特定的文件 (Page.aspx)。

<location path="page.aspx" />
  <authorization>
    <allow users="DomainName\Bob, DomainName\Mary" />
    <deny users="*" />
  </authorization>
</location>

用于 URL 授权的用户和角色是由身份验证设置决定的:

如果设置了 <authenticationmode="Windows" >,则给 Windows 用户和组帐户授予访问权限。 用户名采用“DomainName\WindowsUserName”格式 角色名采用“DomainName\WindowsGroupName”格式

本地管理员组称为“BUILTIN\Administrators”。本地用户组称为“BUILTIN\Users”。

如果设置了 <authenticationmode="Forms" >,则根据存储在当前 HTTP 上下文中的 IPrincipal 对象的用户和角色进行授权。例如,如果使用窗体身份验证根据数据库验证用户的身份,则根据从数据库中检索的角色进行授权。

如果设置了 <authenticationmode="Passport" >,则根据从存储中检索的 Passport User ID (PUID) 或角色进行授权。例如,可以将 PUID 映射到特定的帐户和在 SQL Server 数据库或 Active Directory 中存储的一组角色。

此功能被内置到 Microsoft Windows .NET Server 2003 操作系统中。

如果设置了 <authenticationmode="None" >,则不能执行授权。"None" 指定您不想执行任何身份验证,或者不想使用任何 .NET 身份验证模块,而是使用自己的自定义机制。

但是,如果使用自定义身份验证,则应创建具有角色的 IPrincipal 对象,并将其存储到 HttpContext.User 中。在随后执行 URL 授权时,将根据 IPrincipal 对象中保存的用户和角色(无论以何种方式检索它们)执行授权。

URL 授权示例

以下列表列出了一些典型 URL 授权示例的语法:

拒绝匿名帐户访问

<deny users="?" />

拒绝所有用户访问

<deny users="*"/>

拒绝 Manager 角色访问

<deny roles="Manager"/>

窗体身份验证示例

<configuration>
  <system.web>
      <authentication mode="Forms">
        <forms name=".ASPXUSERDEMO" 
               loginUrl="login.aspx" 
               protection="All" timeout="60" />
      </authentication>
      <authorization>
        <deny users="jdoe@somewhere.com" />
        <deny users="?" />
      </authorization>
  </system.web>
</configuration>

<authorization> 元素可用于存储在 HttpContext.User 中的当前 IPrincipal 对象,也可用于存储在 HttpContext.Request.RequestType 中的 HTTP 数据传输方法。

保护资源

1.

使用 Windows ACL 保护资源,包括文件、文件夹和注册表项。

如果不使用模拟,则应用程序需要访问的任何资源的 ACL 必须授予 ASP.NET 进程帐户至少“读”访问权限。

如果使用模拟,文件和注册表项的 ACL 必须授予已验证用户(或匿名 Internet 用户帐户,如果匿名身份验证生效的话)至少“读”访问权限。

2.

保护 Web.config 和 Machine.config:

使用正确的 ACL。如果 ASP.NET 使用模拟,则模拟的标识需要“读”访问权限。否则,ASP.NET 进行标识需要“读”访问权限。对 Web.config 的 Machine.config 使用以下 ACL。

系统:完全控制

管理员:完全控制

进程标识或模拟的标识:读

如果没有模拟匿名 Internet 用户帐户 (IUSR_MACHINE),则应该拒绝该帐户的访问。

如果将应用程序映射到 UNC 共享,则 UNC 标识也需要读取配置文件的访问权限。

删除不需要的 HTTP 模拟。Machine.config 包含一组默认的 HTTP 模拟(在 <httpModules> 元素内)。它们是:

WindowsAuthenticationModule

FormsAuthenticationModule

PassportAuthenticationModule

UrlAuthorizationModule

FileAuthorizationModule

OutputCacheModule

SessionStateModule

如果应用程序没有使用特定的模拟,请将其删除,以免将来在应用程序中出现与该模拟有关的任何潜在的安全问题。

3.

(可选)将 <location> 元素与

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ...  下一页 >> 


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台