在今天,当我们运用ASP.NET来开发网站或是企业项目系统时,安全性已经成为了首要的问题。ASP.NET是架构在IIS上的一个服务,网站或系统的安全与ASP.NET及IIS的安全关系有着极其密切的联系。ASP.NET与IIS之间到底是一个什么样的关系呢?
从用户端发出HTTP Web请求到ASP.NET应用程序将数据资源返回给用户,中间会经历一系列的验证和授权步骤,这些将说明ASP.NET与IIS之间的安全关系。
1> IIS接收到HTTP请求。可以使用SSL技术来保证服务器的身份,此外SSL也提供一个安全通道,以保护在客户端和服务器间传送的机密数据。
2> IIS使用基本、摘要式或其他验证的方式验证用户。如果网站中全部或部分内容无须经过验证,则可将IIS设定为匿名验证。
3> 经过验证之后,IIS会将用户的Windows存取令牌传送到ASP.NET,如果IIS使用的是匿名验证,则为匿名Internet使用者的存取令牌(默认值为IUSER_MACHINE帐号)。
4> ASP.NET验证请求者。有三种方式的验证:Windows验证,窗体验证,护照验证。
5> ASP.NET会授权存取所需要的资源。有两类授权:
a) URL授权。通过URL授权模块使用在Web.config中设定的授权规则(也就是<authorization>元素中的设置),检查用户是否具有访问权。例如:
<authorization>
<allow users="Admin"/>
<deny users="*"/>
</authorization>上面的例子表示名为Admin的用户有访问权,而其他所有用户的访问都是被拒绝的。
b) 文件授权。文件授权是根据文件的存取控制清单(ACL)来确定已经过验证的用户帐户能否访问文件。例如:应用程序允许使用IUSER_MACHINE帐户进行匿名访问,当这个访问到index.aspx时,ASP.NET会根据ACL来检查该文件以确定 IUSER_MACHINE帐户是否具有读取该文件的权限。如果有,则授权访问;没有就不能访问。
6> 应用程序会使用特别身份,存取本机或远程资源。
当我们了解了ASP.NET与IIS之间的关系之后,我们就可以对身份验证及资源授权进行各种综合的考虑,以加强网站或系统的安全性了。
浙公网安备 33010602011771号