ASP.NET 的安全模式

AS P.N ET的安全模式

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

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

Windows: IIS验证,在内联网环境中非常有用
.Passport: 微软集中式身份验证,一次登录便可访问所有成员站点,需要收费
Form: 窗体验证,验证帐号/密码,Web编程最佳最流行的验证方式
None: 表示ASP.N ET自己根本不执行身份验证,完全依赖IS身份验证

认证与授权:

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

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

授权流程:

forms的主要属性:

name:这是赋予 cookie的名字,该cookie用于在请求之间保存用户。该默认值是 .ASPXAUTH

loginUrl:如果没有找到有效的验证 cookie,就指定请求重定向的URL

protection:指定要应用于验证cookie的保护级别,它有4个设置
                  All:应用程序使用数据有效性验证和加密机制来保护 cookie。这是默认设置。
                  None:不加密 cookie。
                  Encryption:加密 cookie,但不对它进行数据有效性验证。

                  Validation:进行数据有效性验证,但不加密 cookie

path:指定应用程序所存储cookie的路径。在大多数情况下应用/,它是默认设置

timeout:指定cookie过期的时间(分钟),其默认值为30分钟

cookieless:制定在进行验证和授权过程中,基于窗体的身份验证过程是否使用cookie

defaultUrl:指定默认的URL

domain:指定要与窗体身份验证一起发送的域名

对密码进行加密:

Clear:密码存储为明文。用户的密码直接与这个值比较。

MD5:密码使用散列摘要进行存储。使用MD5算法进行散列,再与这个值进行相等比较。这个算法比SHA1的性能好。

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

<authorization>配置对用户进行授权

<authorization>配置节用来对用户进行授权,在实现用户授权过程中,应该遵循以下两个应用规则:

一是位于较低目录级别的配置文件中包含的规则,优先于位于较高目录级别的规则

二是对于给定URL的一组合并的规则,系统从列表头开始,检查规则直到找到第一个匹配项为止

<authorization>配置:

deny阻止访问用户

allow允许访问用户

?代表匿名用户

*代表任意用户

多个用户之间用“,”隔开

一个小例子:

<authorization>配置对用户进行授权代码块:

        <!--
            通过 <authentication> 节可以配置
            安全身份验证模式,ASP.NET 
            使用该模式来识别来访用户身份。 
        -->
        <!--<authentication mode="Windows" />-->
      <authentication mode="Forms" >
        <forms loginUrl="logde.aspx" defaultUrl="Default.aspx">

          <credentials passwordFormat="Clear">
            <user name="admin" password="admin"/>
            
            <user name="user" password="123456"/>
          </credentials>
        </forms>
      </authentication>
登录页面代码块:
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <br />
        <asp:Button ID="Button1" runat="server" Text="登录" onclick="Button1_Click" />
    </div>
    </form>

登录页面后台代码块:

        protected void Button1_Click(object sender, EventArgs e)
        {
            string name = TextBox1.Text;
            string password = TextBox2.Text;
           
            //if (name == "admia" && psw == "admia")
            //{
            //    FormsAuthentication.RedirectFromLoginPage(name, false);
            //} //帐号admin密码admin的用户才能登录
            if (FormsAuthentication.Authenticate(name,password))
            {
                
                //Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile("admin","MD5"));//输出MD5密码加密的密码
                FormsAuthentication.RedirectFromLoginPage(name, false);
            }
        }

首页代码块:

    <form id="form1" runat="server">
    <div>
    首页
    </div>
    </form>

默认页面代码块:

    <form id="form1" runat="server">
    <div>
    默认界面
    </div>
    </form>

管理员页面代码块:

    <form id="form1" runat="server">
    <div>
     管理员页面
    </div>
    </form>


猜你喜欢

转载自blog.csdn.net/qq_41851370/article/details/79918177
今日推荐