zoukankan      html  css  js  c++  java
  • asp.net 安全认证学习(一)web.config 配置

    在系统开发中经常会有一种场景是对整个网站而言有部分页面是可以通过匿名访问即可无需认证,而有些网页是需要通过认证(简单的讲就是需要登陆)来处理。如果我们简单的只是增加一个登陆界面,后期在访问每个页面时都增加一个对cookie的检查是否是已授权用户,此方法漏洞比较多,而且处理起来也很麻烦。好在现在asp.net中增加了对页面安全认证的处理,使得我们在开发时节省了大量时间。

    为此,我们需要做的步骤可以如下:

    1、修改web.config,配置认证方式:系统提供的认证方式有Windows、Forms、PassPort、None,默认情况下站点的认证模式是<authentication mode="Windows">,也就是使用IIS验证方式,显然这种认证方式不是我们这个场景所需要的。我们需要的采用Forms的认证模式,简单的说就是页面认证,其原理后面在说,先看如何配置:

     1/<authentication mode="Windows|Forms|Passport|None">  2    <forms name="name"  3           loginUrl="url"  defaultUrl="url"  4           protection="All|None|Encryption|Validation"  5           timeout="30" path="/" >  6           requireSSL="true|false"  7           slidingExpiration="true|false">  8       <credentials passwordFormat="Clear|SHA1|MD5">  9          <user name="username" password="password"/> 10       </credentials> 11    </forms> 12    <passport redirectUrl="internal"/> 13 </authentication> 一、authentication属性

    属性 选项 说明
    mode   控制应用程序的默认身份验证模式。
      Windows 将 Windows 验证指定为默认的身份验证模式。当使用以下任意形式的 Microsoft Internet 信息服务 (IIS) 身份验证时使用该模式:基本、简要、集成的 Windows 验证 (NTLM/Kerberos) 或证书。
      Forms 将 ASP.NET 基于窗体的身份验证指定为默认的身份验证模式。
      Passport 将 Microsoft Passport 身份验证指定为默认的身份验证模式。
      None 不指定任何身份验证。只有匿名用户是预期的或者应用程序可以处理事件以提供其自身的身份验证。
    二、forms属性
    属性 选项 说明
    name   指定要用于身份验证的 HTTP Cookie。默认情况下,name 的值是 .ASPXAUTH。如果在单个服务器上正运行多个应用程序并且每一应用程序均要求唯一的 Cookie,则您必须在每一应用程序的 Web.config 文件中配置 Cookie 名称。
    loginUrl   指定如果没有找到任何有效的身份验证 Cookie,为登录将请求重定向到的 URL。默认值为 default.aspx。
    protection   指定 Cookie 使用的加密类型(如果有)。
      All 指定应用程序同时使用数据验证和加密来保护 Cookie。该选项使用已配置的数据验证算法(基于 <machineKey> 元素)。如果三重 DES (3DES) 可用并且密钥足够长(48 位或更多),则使用三重 DES 进行加密。All 是默认(和建议)值。
      None 指定对于将 Cookie 仅用于个性化并且具有较低的安全要求的站点而言,同时禁用加密和验证。不推荐以此方式使用 Cookie;但是,这是使用 .NET Framework 启用个性化的占用资源最少的方式。
      Encryption 指定使用三重 DES 或 DES 对 Cookie 进行加密,但不对该 Cookie 执行数据验证。以此方式使用的 Cookie 可能会受到精选的纯文本的攻击。
      Validation 指定验证方案验证已加密的 Cookie 的内容在转换中是否未被改变。Cookie 是使用 Cookie 验证创建的,方式是:将验证密钥和 Cookie 数据相连接,然后计算消息身份验证代码 (MAC),最后将 MAC 追加到输出 Cookie。
    timeout   指定以整数分钟为单位的时间量,超过此时间量,Cookie 将过期。默认值是 30。如果 SlidingExpiration 属性为 true,则 timeout 属性是一个弹性值,以收到最后一个请求后指定的分钟数为到期时间。为避免危及性能,以及为避免向启用 Cookie 警告的用户显示多个浏览器警告,在经过了超过一半的指定时间后更新该 Cookie。这可能导致精确性上的损失。持久性 Cookie 不超时。
    path   为由应用程序发出的 Cookie 指定路径。默认值是正斜杠 (/),这是因为大多数浏览器是区分大小写的,并且如果路径大小写不匹配,将不发送回 Cookie。
    requireSSL   指定是否需要安全连接来转换身份验证 Cookie。
      true 指定必须使用安全连接来保护用户凭据。如果是 true, ASP.NET 为身份验证 Cookie 设置 HttpCookie.Secure,兼容的浏览器不返回 Cookie,并且除非连接使用的是安全套接字层 (SSL)。
      false 指定在传输 Cookie 时,安全连接不是必需的。默认值为 false
    slidingExpiration   指定是否启用弹性过期时间。在单个会话期间,弹性过期时间针对每个请求重置当前身份验证 Cookie 的过期时间。
      true 指定启用弹性过期时间。在单个会话期间,身份验证 Cookie 被刷新,并且每个后续请求的到期时间被重置。ASP.NET 版本 1.0 的默认值为 true
      false 指定不启用弹性过期时间,并指定 Cookie 在最初发出之后,经过一段设定的时间间隔后失效。默认值为 false

    三、credentials属性

    属性 选项 说明
    passwordFormat   指定用于存储密码的加密格式。
      Clear 指定密码不加密。
      MD5 指定使用 MD5 哈希算法给密码加密。
      SHA1 指定使用 SHA1 哈希算法给密码加密。

    四、user属性

    属性 说明
    name 登录用户名。
    password 用户的密码。
    五、passport属性
    属性 说明
    redirectUrl 请求被重定向到的 URL。

     通过以上说明应该基本明白该如何配置了,我们常用的配置是

    <authentication mode="Windows">    <forms name=".FrameWork" defaultUrl="Default.aspx" loginUrl="Login.aspx" enableCrossAppRedirects="true" path="/"></forms>   </authentication>

    需要重点说明的是 name是要在整个应用服务器是唯一的,它是存储cookie的标识,loginurl 是如果访问的页面没有获得认证信息则返回到该指定的页面进行认证,defaulturl 是通过认证后的默认的访问页面。

    2、下面需要的是配置页面访问的用户

    <authorization> 
       <allow .../>
       <deny .../>
    </authorization>

    下面几部分描述了属性、子元素和父元素。

    属性

    无。

    子元素

    子标记 说明

    allow

    向授权规则映射添加一个规则,该规则允许对资源进行访问。

    deny

    向授权规则映射添加一条拒绝对资源的访问的授权规则。

    运行时,授权模块从最本地的配置文件开始,循环访问 allowdeny 元素,直到它找到适合特定用户帐户的第一个访问规则。然后,该授权模块根据找到的第一个访问规则是 allow 还是 deny 规则来允许或拒绝对 URL 资源的访问。默认的授权规则为 <allow users="*"/>。因此,默认情况下允许访问,除非另外配置。

    <deny  users="?"/> 作为users需要说明的是可以采用一个逗号分隔的用户名列表,问号 (?) 表示拒绝匿名用户;星号 (*) 表示拒绝所有用户帐户访问。

    3、配置需要排除认证的页面

    下面的代码示例演示如何允许匿名用户获得 Logon.aspx 页的访问权

    <configuration>
       <location path="Logon.aspx">
          <system.web>
             <authorization>
                <allow users="?"/>
             </authorization>
          </system.web>
       </location>
    </configuration>
    好了,到此我们就可以初步设计一个安全认证的配置了,可以试试哦,感觉要简单多了!
    后面我们还要在了解些高级安全认证的知识,同样也会涉及到配置web.config,可以利用配置web.config
    利用配置访问节,指定我们的安全认证模块,自定义认证模式!
  • 相关阅读:
    利用SuperMap Deskpro进行Peking 54到WGS84的转换
    远程序列化xml文件(可用于自动更新程序中版本号的比较,更新文件的读取等)
    [转]C#导出到EXCEL
    [转]常用数学公式
    CLR Via C#系列学习笔记之委托
    黑马程序员C#语言中的三种循环:while 循环、dowhile 循环、for 循环。
    .net2005中GridView或者Datalist等超級流行的分頁
    Array.splice()删除数组中重复的数据
    .net中常需对文件夹以及常用的操作方法
    文件的上传下载示例
  • 原文地址:https://www.cnblogs.com/oldkingsir/p/2365655.html
Copyright © 2011-2022 走看看