如何建立一个安全的ASP.NET架构

发表于:2009-6-04 10:50

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

  (3)假冒

  假冒是在其他用户标识的上下文中执行代码的过程。在默认情况下,所有的ASP.NET代码都是在Domain/ASPNET用户账户下执行的,要利用其他的标识执行代码,假冒其他的标识,我们应该利用.NET安全架构中的内置的假冒的功能。它允许我们指定执行代码的用户账户,比如不同于Domain/ASPNET的预定用户账户。我们既可以利用ASP.NET中身份验证功能来验证用户,也可以利用标准的Windows身份验证来验证用户。

  然后我们可以利用我们的凭证,或者利用执行代码的预定义用户账户来设置所假冒的账户。

  假冒还允许我们在不使用ASP.NET提供的身份验证和授权功能的情况下提供身份验证和授权:我们可以利用用户账户和他们相关权限支持Windows和IIS管理身份验证和授权。

  假冒通常用于提供访问控制,比如授权,一个应用程序可以访问它所假冒的的用户可以访问的任何资源。例如,默认情况下,Domain/ASPNET用户不能对文件系统进行读写操作的,所以这个用户账户也无法在Enterprise Services中执行事务处理。但是利用假冒,用户就可以通过假冒一个特定的Windows账户完成这些事情,因为这个特定的账户有这个权限。因此,我们就可以保证一些用户可以对文件系统进行读写操作,而其他的一些用户仅仅执行读的操作。

  好了,上面讲了很多,我们现在就来小结一下,看看如何把身份验证,授权,假冒一起用于Web程序中。

  当用户首次访问Web站点时,他们是匿名用户,我们不知道他们的标识,除非对他们进行身份验证,否则我们以后还是不知道他们的标识。当用户请求非安全的资源时,他们可以自动的访问这个资源(这就是非安全资源的定义)

  当用户请求安全的受保护的资源时,就要如下步骤:

  • 请求被发送到 Web服务器,由于此时这个用户标识还有被确认,所以用户就被重定向到登录页面
  • 用户提供凭证,身份验证就对凭证进行验证和审核
  • 如果用户凭证合法,就可以访问资源,否则,就不能。

  当用户请求安全的资源,但是该资源有特定权限的用户才能访问,就会发生下面步骤:

  • 请求被发送到 Web服务器,由于此时这个用户标识还有被确认,所以用户就被重定向到登录页面
  • 用户提供凭证,身份验证就对凭证进行验证和审核
  • 把用户的凭证或者角色与被允许的用户或者角色进行比较,如果用户在列表中,那么他们就被准许访问这个资源,否则,拒绝。

  如果启用了假冒,那么在这两种情况下,假冒都会发生。默认情况下,假冒是禁止的,可以修改配置文件添加元素启用:

  以下为引用的内容:

  <configuration>

  <system.web>

  <identity impersonate="true" userName="Xiaoyang/User" password="xiaoyang"/>

  </system.web>

  </configuration>

  在中,把impersonate特性设置为true,拿userName和 password设为要假冒的用户账户。 如果假冒被启用,那么被审核的就是假冒的用户标识的凭证,而不是提交的凭证。这两种凭证有可能相同,需要注意的是:假冒是利用Web服务器中已有的用户访问,如IUser用户。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号