关闭

[Web配置]web.config中用户验证 访问权限 配置

标签: webauthorizationauthenticationformsssl加密
437人阅读 评论(0) 收藏 举报
分类:

代码如下:

1,当一个目录下的所有网页禁止访问时;如下

    <system.web>
      <!--当验证模式为froms(如下),如果匿名用户访问禁止访问的页,将会在下面设计。-->
      <authentication mode="Forms">

     <!--当验证模式为froms(如下),如果匿名用户访问禁止访问的页,将会转到login.aspx。-->
        <forms defaultUrl="Default.aspx" loginUrl="Login.aspx" timeout="30" name=".FormsAuthCookie" protection="All" path="/"></forms>
      </authentication>
      <!--设定禁止访问的用户-->
      <authorization>
        <deny users="*"/>
        <!-- 禁止所有用户匿名用户浏览-->
      </authorization>
    </system.web>

2.如果有如除了登录页面外的所有页面都不能访问。如下设置:
<!-- 除了这一页外,禁止所有用户匿名用户浏览如下:-->
<location path="login.aspx">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
</location>

具体解释

      <authentication mode="Forms">

窗体身份验证准则

要使用窗体身份验证,设置 元素的 mode="Forms"。接下来,使用 子元素配置窗体身份验证。以下片段显示了一个安全的 身份验证元素配置:

<authentication mode="Forms">
<forms loginUrl="Restricted\login.aspx" Login page in an SSL protected folder
protection="All"                  Privacy and integrity
requireSSL="true"                 Prevents cookie being sent over http
timeout="10"                      Limited session lifetime
name="AppNameCookie"              Unique per-application name
path="/FormsAuth"                    and path
slidingExpiration="true" >        Sliding session lifetime
</forms>
</authentication>

使用以下推荐实践提高窗体身份验证安全性:

设置 Protection="All"

这个设置能够确保窗体身份验证 cookie 加密,从而提供私密性和完整性。用于 cookie 加密的密钥和算法是在 <machineKey> 元素上指定的。

加密和完整性检查能够防止 cookie 篡改,虽然如果攻击者设法捕获 cookie 的话,它们并不能降低 cookie 重放攻击的风险。还应该使用 SSL 防止攻击者通过使用网络监视软件捕获 cookie。尽管使用了 SSL,cookies 还是能够通过跨站点脚本 (XSS) 攻击窃取。应用程序必须通过适当地输入验证策略,采取足够防范措施,以降低这种风险。

使用小的 cookie 超时值

使用小的超时值限制会话生存期,并减少 cookie 重放攻击的可能性。

考虑使用固定的到期时间

考虑设置 <forms> 元素的 slidingExpiration="false" 以修改 cookie 到期时间,不要在每次 Web 请求之后重新设置到期时间。如果您不使用 SSL 保护 cookie 的话,这是很重要的。

此功能在 .NET Framework 1.1 版中提供。

在窗体身份验证中使用 SSL

使用 SSL 保护凭据和身份验证 cookie。SSL 能够防止攻击者捕获凭据或者用来向应用程序标识您的窗体身份验证 cookie。窃取的身份验证 cookie 是一个窃取的登录。

设置 requireSSL="true"这将设置 cookie 中的 Secure 属性,从而确保 cookie 不会从浏览器通过 HTTP 链路传输到服务器。HTTPS (SSL) 是必需的。

这是一个 .NET Framework 1.1 版设置。在 1.0 版上构建的应用程序中,设置 cookie Secure属性是通过显式的编程进行的。有关更多信息和示例代码,请参阅“构建安全的 ASP.NET Web 页和控件”单元。

如果您不使用 SSL,设置 slidingExpiration = "false"

通过将 slidingExpiration 设置为 false,可以将 cookie 超时时间修改为距离 cookie 最初创建时的分钟数。否则,超时将在每次向 Web 服务器请求时更新。如果 cookie 被捕获了,将为攻击者提供所需要的足够时间以经过身份验证的用户标识访问应用程序。

此功能在 .NET Framework 1.1 版中提供。

不要在产品服务器上使用元素

在 XML 配置文件中存储用户凭据的能力是为了支持快速开发和有限测试而提供的。不要使用实际的最终用户凭据。最终用户凭据不应该存储在产品服务器上的配置文件中。产品应用程序应该实现自定义用户凭据存储区,例如,在一个 SQL Server 数据库中。

配置 machineKey

<machineKey> 元素定义了用来加密窗体身份验证 cookie 的加密算法。此元素还保留着加密密钥。有关更多信息,请参阅本单元中的“机器密钥”部分。

使用唯一的 cookie 名称和路径

使用唯一的 namepath 属性值。通过确保名称的唯一,能够防止在同一个服务器上寄宿多个应用程序时可能出现的问题。

<authorization>

<authorization> 中以<allow> 和 <deny> 子元素的形式指定

一个特定的用户
一个逗号分隔的用户列表
所有匿名用户,以问号 (?) 表示
所有用户,以星号 asterisk (*) 表示
以下标记说明了如何使用 URL 授权规则来允许用户Tito 和 Scott ,而拒绝其它用户:

<authorization>
     <allow users="Tito, Scott" />
     <deny users="*" />
</authorization>

 

http://qqhack8.blog.163.com/blog/static/11414798520117131109550/

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:105473次
    • 积分:1913
    • 等级:
    • 排名:千里之外
    • 原创:47篇
    • 转载:69篇
    • 译文:4篇
    • 评论:14条
    最新评论
    QLeelulu
    博客园-五加乘