ASP.NET网站开发——成员资格(安全模式)

  • Post author:
  • Post category:其他


安全的必要性



  • 构造特殊的链接地址,导致文件内的数据泄露

  • 数据库泄露

  • 安全防范的首要范畴:所有的HTTP访问都要经过IIS,所以限制IIS的安全性是关键

asp.net的安全模式

简介:根据所请求的资源类型,IIS能够自己处理请求,也可以不自己处理请求。如果资源请求一个ASPX页面,则IIS将请求经过身份验证用户(或者匿名用户)的安全令牌一起传递给ASP.NET。接下来的事情就取决于ASP.NET配置。

  • 根据锁请求资源的类型,IIS能够自己处理请求,也可以不自己处理请求
  • 如果资源请求一个ASP页面,则IIS经请求经过身份验证用户(或者匿名用户)的安全令牌一起传递给ASP.NET,接下来发生的事情就取决于asp.net的配置。

ASP.NET支持4种授权方法:

  • Windows:IIS验证,对于内联网环境非常有用
  • Passport:微软集中式身份验证,一次登录便可访问所有成员站点,需要收费

  • Form:窗体验证,验证账号/密码,Web最佳最流行的验证方式
  • None:表示ASP.NET自己不执行验证方式,完全依赖IIS身份验证

认证和授权机制


认证是确认用户身份的过程,在用户通过了身份验证后,开发人员就可以确定该用户是否有权继续操作。如果没有进行身份验证,就不能进行实体授权。

授权是确定已验证的用户是否有权访问应用程序中的某个部分、某个点或只访问应用程序提供的特定数据集。

基于窗体身份授权模式

允许用户访问整个应用程序或其特定资源的一种流行模式

IIS接收请求,但不进行处理,而传递给

<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="login.aspx" defaultUrl="Index.aspx">
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>

<

authorization

>节指示用户定义的登录窗体URL,ASP.NET仅向<

authorization

>节被显示拒绝访问的用户显示该窗体。

deny

表示验证阻止匿名用户,

allow

表示允许访问用户,

符号“?”

表示任何匿名未经身份验证的用户。如果请求者未通过验证就执行<

authorization

>元素中的内容。

Mode

属性的值设值为Form,表示Web应用程序使用基于窗体的身份验证。

loginUrl

表示未验证用户跳转的页面,

defaultUrl

表示验证成功默认跳转的页面。

path


保存cookie的位置。该cookie用于储存授权用户的访问令牌,多数情况默认值为“/”。


下图为用户身份验证流程



下图为<Form>元素主要属性



密码进行加密

我们可以将用户名和密码保存在Web.config文件中,用来检查用户名和密码是否来自授权用户。Web.config文件

文件的<forms>子元素还可以有子元素。子元素<credentials>允许直接在Web.config中指定用户名和密码组合。



<credentials>元素在配置文件中添加了用户及其密码。<credentials>有一个属性passwordFormat,其值可以是Clear、MD5和SHAI。


密码加密方式有三种


Clear:密码储存明文。用户的密码直接与这个值比较,不需要进一步转换。


MD5:

密码使用散列摘要进行存储。在验证证书时,用户密码使用MD5算法进行散列,在与这个值进行相等比较。不会存储或比较明文密码。这个算法比SHAI的性能好



SHA1:

密码使用SHA1散列摘要来存储。在验证证书时,用户密码使用SHA1算法进行散列,再与这个值进行相等比较。这个算法的安全性最高。




下面的例子获取了用户输入的密码然后将其以MD5加密形式输出出来:








Form验证总结


1    假设用户请求保护的页面为Default.aspx

2    HTTP模块调用Form验证服务截取来自用户的请求,并检查其中是否包含用户凭证

3    如果没有发出任何用户凭据,将自动转向用户登录页面Login.aspx

4    原请求页面地址Default.aspx将以ReturnUrl值的形式附加在登录页面Login.aspx的Url地址后。当用户通过验证,程序将根据ReturnUrl值进行页面重新定向,以便访问Default.aspx。




设置访问权限











使用<location>配置节,可以指定特定的文件或目录进行特别访问权限:
























微笑

如有不足,请批评指正,谢谢






版权声明:本文为zzllyy119977原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。