ASP.NET的安全性

      ASP.NET提供一个很健壮的安全系统,ASP.NET的安全性和性能有很深的关系,利用ASP.NET的安全机制可以从每个Web页面的顶端编写安全检查代码的工作解放出来,安全检查有核心的ASP.NET子系统完成。

      当IIS收到请求时,它首先查看资源是如何受保护的,资源可以用户匿名访问保护,或者用标准的本地或活动目录证书保护。IIS通过标准的访问控制列表(ACL)查看用户对请求的资源十分有访问权限。如果任何一项检查失败,IIS甚至在请求到达ASP.NET之前就拒绝访问。在这个过程中发生了两件事,用户被身份验证(在匿名访问时事通过标准的IUSER_<machine-name>账号进行身份验证),然后被授权(通过对照ACL检查身份验证证书) 。

     如果一个ASP.NET资源(ASP.NET页面,用户控件或Web服务)被请求,IIS对请求进行了身份验证并授权,下一步是由ASP.NET提的自己的身份验证和 授权。

     IIS和ASP.NET身份验证/授权的安全进程:

      image

       ASP.NET在应用程序中用户身份验证有:Windows身份验证,Form身份验证,Passprot身份验证。Windows身份验证提供与传统的Windows账号(或者是活动目录账号或者本地账号)的集成。该模式的工作方式和正常的IIS身份验证相同。在这种模式下,要禁用对站点的匿名访问,以保护站点不被围授权用户侵入。然后要更新Web.config文件,指定身份验证模式为Windows身份验证,并指定ASP.NET应该使用用户应该被IIS质询时输入的证书作为该应用程序的证书。

显示行号 复制代码
  1. <configuration>
        <system.web>
            <authentication mode="Windows">
            </authentication>
            <identity impersonate="true"/>
        </system.web>
    </configuration>

       可以通过Web.config文件的<authorization>部分允许或拒绝角色、用户、指定组合访问权限:

显示行号 复制代码
  1. <configuration>
        <system.web>
            <authorization>
                <allow roles="role1"/>
                <deny users="*"/>
            </authorization>
        </system.web>
    </configuration>

       Windows身份验证时最快的身份验证模式,因为它依赖于IIS已查询过的东西,但是,它也是可自定义程度最小的验证模式,因为不能控制登录页面或证书来源,该模式比较适合内网。

       Forms身份验证允许控制标准的登录页面,并根据Web.config文件中的条目进行身份验证,或者使用自己的身份验证文件。Forms身份验证时可以定义最强的身份验证方法。

显示行号 复制代码
  1. <configuration>
        <system.web>
            <authentication mode="Forms">
                <forms name="Form1" path="/" loginUrl="Login.aspx" timeout="15"/>
            </authentication>
        </system.web>
    </configuration>

       可以在Web.config文件中指定能够访问Web应用程序的证书的一个列表,但这样很不安全,证书是在XML配置文件中以明文存储的。虽然可以加密密码的值,但会造成性能的下降,而且管理证书列表也会非常麻烦。

       一般是针对用户的ID和密码所在的数据源创建身份验证方法。通过调用存储过程、或者直接的后台逻辑。

       Passport身份验证允许应用程序和Microsoft Passpart服务集成在一起。该模式基本工作方式是:当检测一个为进行身份验证的请求时,ASP.NET把登录证书从一个Passport登录窗口发送到Passp服务。

       Passport是最慢的身份验证方式,为了验证证书,它要求通过Internet进行Web服务类型的通信。不过Passport可以很好的利用到单点登录。

posted @ 2010-04-26 02:17  Asharp  阅读(4969)  评论(0编辑  收藏  举报