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

ASP.NET 安全性

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

有关如何确定当前执行代码的标识的详细信息,请参见“Troubleshooting”一章中的“确定标识”部分。

不要在特定 Page 事件以外创建 COM 对象

不要在特定 Page 事件处理程序以外创建 COM 对象。以下代码片段阐释了不要执行哪些操作。

<%@ Page Language="C#" AspCompat="True" %>
<script runat="server">
  // COM object created outside of Page events
  YourComObject obj = new apartmentObject();
  public void Page_Load()
  {
    obj.Foo()
  }
</script>

在使用单元模型对象时,一定要在特定 Page 事件(例如 Page_Load)中创建对象(如下所示)。

<%@ Page Language="C#" AspCompat="True" %>
<script runat="server">
public void Page_Load()
{
  YourComObject obj  = new apartmentObject();
  obj.Foo()
}
</script>

更多信息

有关详细信息,请参见 Microsoft 知识库文章 Q308095“PRB:Creating STA Components in the Constructor in ASP.NET ASPCOMPAT Mode Negatively Impacts Performance”。

COM+ 中的 C# 和 VB .NET 对象

Microsoft C#_ 开发工具和 Microsoft Visual Basic_ .NET 开发系统支持所有的线程模拟(自由线程、中性、两者和单元)。默认情况下,将 COM+ 中驻留的 C# 和 Visual Basic .NET 对象标记为“两者”。因此,当 ASP.NET 调用它们时,可以直接进行访问,而不会发生线程切换。

返回页首返回页首

访问网络资源

应用程序可能需要访问网络资源。一定要能够标识以下内容:

应用程序需要访问的资源。

例如,文件共享上的文件、数据库、DCOM 服务器和 Active Directory 对象等等。

用来执行资源访问的标识。

如果应用程序访问远程资源,则远程计算机必须能够对此标识进行验证。

有关访问远程 SQL Server 数据库的信息,请参见“数据访问安全性”一章。

可以使用以下任一种方法,从 ASP.NET 应用程序中访问远程资源:

使用 ASP.NET 进程标识。

使用服务组件。

使用匿名 Internet 用户帐户(例如,IUSR_MACHINE)。

使用 LogonUser API 和模拟特定的 Windows 标识。

使用原调用者。

使用 ASP.NET 进程标识

如果没有将应用程序配置为使用模拟,在应用程序试图访问远程资源时,ASP.NET 进程标识就会提供默认标识。如果使用 ASP.NET 进程帐户访问远程资源,您有三种选择:

使用镜像帐户。

这是最简单的方法。您在远程计算机上使用匹配的用户名和密码创建一个本地帐户。您必须在用户管理器中将 ASPNET 帐户密码更改为已知值(始终使用强密码)。然后,必须在 Machine.config 中的“AutoGenerate”元素上明确地设置它,并替换现有的“AutoGenerate”值。避免使用明文凭证。如前面所述,使用 aspnet_setreg.exe 实用工具在注册表中存储加密凭证。

重要 如果将 ASPNET 密码更改为一个已知值,则 LSA 中的密码不再与 SAM 帐户密码匹配。如果需要恢复为“AutoGenerate”默认值,则需要执行以下任一操作:

运行 Aspnet_regiis.exe,将 ASP.NET 重置为其默认配置。有关详细信息,请参见 Microsoft 知识库文章 Q306005“HOWTO:Repair IIS Mapping After You Remove and Reinstall IIS”。

创建一个权限最少的自定义本地帐户以运行 ASP.NET,并在远程计算机上创建一个重复帐户。

使用一个权限最少的域帐户运行 ASP.NET。

假设客户端计算机和服务器计算机都位于同一个域或信任域内。

更多信息

有关配置 ASP.NET 进程帐户的详细信息,请参见“How To Create a Custom Account to Run ASP.NET”。

使用服务组件

可以使用配置为以固定标识运行的进程外服务组件来访问网络资源。图 6 显示了这种方式。

f08sn06

6. 使用进程外服务组件为网络资源访问提供固定标识

使用进程外服务组件(在 Enterprise Services 服务器应用程序中)具有以下优点:

在标识使用上具有很大灵活性。不是仅依赖于 ASP.NET 标识。

受信任的或具有更高权限的代码可以与主 Web 应用程序分开。

从安全角度来讲,由于增加了一个进程,所以提高了安全门槛。对于攻击者而言,穿过进程边界到达具有更高权限的进程要困难得多。

如果您需要使用 LogonUser API 调用进行手动模拟,则可以在与主 Web 应用程序分开的进程中执行此操作。

要调用 LogonUser,您必须授予 Enterprise Services 进程帐户“充当操作系统的一部分”的权限。可以通过提高与 Web 应用程序分开的进程的权限来减少安全隐患。

使用匿名 Internet 用户帐户

如果将 IIS 配置为使用匿名身份验证,则可以使用匿名 Internet 用户帐户访问网络资源。如果以下任一种情况属实,就会发生这种情况:

应用程序支持匿名访问。

应用程序使用窗体、Passport 或自定义身份验证(其中将 IIS 配置为使用匿名访问)。

使用匿名帐户访问远程资源

1.

将 IIS 配置为使用匿名身份验证。可以根据应用程序的身份验证要求,将 ASP.NET 身份验证模式设置为“Windows”、“窗体”、“Passport”或“无”。

2.

将 ASP.NET 配置为使用模拟。在 Web.config 中使用下列设置:

<identity impersonate="true" />

3.

将匿名帐户配置为权限最少的域帐户,

- 或者 -

在远程计算机上使用相同的用户名和密码复制匿名帐户。在不信任域之间进行调用时,或者通过没有打开支持集成 Windows 身份验证所需端口的防火墙进行调用时,必须使用此方法。

要支持这种方法,您还必须:

1.

使用 Internet 服务管理器清除匿名帐户的“允许 IIS 控制密码”复选框。

如果选择此选项,则使用指定匿名帐户创建的登录会话最终得到的是 NULL 网络凭证(因此不能用来访问网络资源)。如果不选择此选项,则登录会话是一个具有网络凭证的交互式登录会话。

2.

在用户管理器和 Internet 服务管理器中均设置帐户的凭证。

重要如果您模拟匿名帐户(例如,IUSR_MACHINE),则必须禁止该帐户访问资源(使用进行适当配置的 ACL)。对于应用程序需要访问的资源,必须(至少)授予匿名帐户“读”访问权限。应该拒绝匿名帐户访问所有其他资源。

承载多个 Web 应用程序

对于 Web 站点中的每一个虚拟根目录,可以使用一个单独的匿名 Internet 用户帐户。在承载环境中,这允许您分别授权、跟踪和审核来自不同 Web 应用程序的请求。 7 显示了这种方式。

f08sn07

7. 为每个应用程序模拟不同的匿名 Internet 用户帐户 (v-dir)

为特定的虚拟目录配置匿名 Internet 用户帐户

1.

“管理工具”程序组中启动“网络管理工具”。

2.

选择要配置的虚拟目录,右击,然后单击“属性”。

3.

单击“目录安全性”选项卡。

4.

在“匿名访问”和“身份控制”组中,单击“编辑”。

5.

选择“匿名访问”,然后单击“编辑”。

6.

键入在匿名用户连接到站点时希望 IIS 使用的帐户的用户名和密码。

7.

确保没有选中“允许 IIS 控制密码”。

使用 LogonUser 并模拟特定的 Windows 标识

可以使用以下方法模拟特定的标识:在 Web.config 中的 <identity> 元素上配置用户名和密码属性,或者在应用程序代码中调用 Win32_ LogonUser API。

重要 正如本章前面所提到的,当在 Windows 2000 服务器上使用 .NET Framework 1.0 时,不推荐使用 LogonUser 和固定的模拟标识,因为它强制给 ASP.NET 进程帐户授予“充当操作系统的一部分”权限。

Microsoft Windows .NET Server 2003 将取消这一限制。另外,在 Windows 2000 中,.NET Framework 1.1 版会为此方案提供一个增强功能。登录会由 IIS 进程执行,因此 ASP.NET 不需要“充当操作系统的一部分”权限。

使用原调用者

要使用原调用者的标识访问远程资源,您必须能够将调用者的安全性上下文从 Web 服务器委派到远程计算机。

可扩展性警告 如果使用原调用者的模拟标识访问应用程序的数据服务层,则会严重影响应用程序的可扩展性,这是因为数据库连接池的效率非常低。对于每个用户而言,数据库连接的安全性上下文是不同的。

以下身份验证方案支持委派:

Kerberos。有关详细信息,请参见“How To Implement Kerberos Delegation for Windows 2000”。

映射到 Windows 帐户的客户端证书。映射必须由 IIS 执行。

基本。基本身份验证支持远程资源访问,因为在 Web 服务器上以明文形式提供原调用者的凭证的。可以使用这些凭证响应来自远程计算机的身份验证质询。

必须将基本身份验证与交互式或批处理登录会话配合使用。可以在 IIS 元数据库中配置从基本身份验证产生的登录会话类型。有关详细信息,请参见 MSDN 上的 Platform SDK:Internet Information Services 5.1。

重要 在支持委派的方法中,基本身份验证是最不安全的一种方法。这是因为明文用户名和密码通过网络从浏览

上一页  [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……
    咸宁网络警察报警平台