ASP.NET网站开发--安全验证

1.ASP.NET的安全模式

Windows身份验证:IIS验证,在内联网中很实用;

Passport身份验证:微软集中式验证,一次登录访问所有成员站点,但是收费;

Form窗体验证:验证账号/密码,Web编程中最佳最流行的验证方式;

None验证:ASP.NET自己根本不执行身份验证,完全依赖IIS身份验证;

关于认证和授权机制

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

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

1.1创建项目--禁止陌生用户登录


Denglu.aspx页面代码,以及登录按钮后台代码:

<body>
    <form id="form1" runat="server">
    <div>
         <asp:Label ID="Label1" runat="server" Text="帐号:"></asp:Label>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="Label2" runat="server" Text="密码:"></asp:Label>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <br />
        <asp:Button ID="Button1" runat="server" Text="登陆" onclick="Button1_Click" 
             style="height: 21px" />
    </div>
    </form>
</body>
 protected void Button1_Click(object sender, EventArgs e)
        {
            string name = TextBox1.Text;
            string pwd = TextBox2.Text;

            if (name == "vip" && pwd == "123456")
            {
                FormsAuthentication.RedirectFromLoginPage(name, false);

            }
            else if (name == "pp" && pwd == "123456")
            {
                Response.Redirect("PuTong.aspx");
            }
        }

Web.config页面需要添加如下配置文件:

  <!--设置访问权限-->
  <location path="admin">
    <system.web>
      <authorization>
        <allow users="admin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
      <authentication mode="Forms">
        <!--defaultUrl:验证成功后,要跳转的页面
        loginUrl:验证帐号密码-->
        <forms loginUrl="Denglu.aspx" defaultUrl="vip.aspx">
        </forms>
      </authentication>
      <authorization>
       <!--禁止陌生人登录-->
        <deny users="?"/>
      </authorization>

其他页面内容比如PuTong.asp:<div> 普通用户登录页面! </div>

ShouYe.aspx:<div> 这是首页啊! </div>

vip.aspx: <div> 这是vip页面! </div>

执行结果:


如果输入其它帐号则不现实:


1.1.1密码加密

Clear:密码存储为明文。用户的密码直接与这个值比较。
MD5:密码使用散列摘要进行存储。使用MD5算法进行散列,再与这个值进行相等比较。这个算法比SHA1的性能好。
SHA1:密码使用 SHA1散列摘要来存储。在验证证书时,用户 密码使用S HA1算法进行散列,再与这个值进行相等比较。这个算法的安全性最高。

Web.config页面需要添加如下配置文件:

      <authentication mode="Forms">
        <!--defaultUrl:验证成功后,要跳转的页面
        loginUrl:验证帐号密码-->
        <forms loginUrl="Denglu.aspx" defaultUrl="vip.aspx">
        </forms>
      </authentication>
      <authorization>
       <!--禁止陌生人登录-->
        <deny users="?"/>
      </authorization>

并在<form></form>里添加:

          <credentials passwordFormat="Clear">
            <user name="admin" password="admin"/>
          </credentials>

Denglu.aspx.cs页面代码:

 protected void Button1_Click(object sender, EventArgs e)
        {
            string name = TextBox1.Text;
            string pwd = TextBox2.Text;

            if (FormsAuthentication.Authenticate(name, pwd))
            {
                Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile(pwd, "MD5"));
            }

            //if (name == "vip" && pwd == "123456")
            //{
            //    FormsAuthentication.RedirectFromLoginPage(name, false);

            //}
            //else if (name == "pp" && pwd == "123456")
            //{
            //    Response.Redirect("PuTong.aspx");
            //}
        }

执行结果:


猜你喜欢

转载自blog.csdn.net/qq_41141741/article/details/79883511