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

安全验证

一、ASP.NET的安全模式

1.安全的必要性:

(1)构造特殊的链接地址,导致文件内的数据泄漏。

(2)数据库泄露。

(3)安全防范的首要策略:所有的HTTP访问都要经过IIS,所以限制IIS的安全性是关键。

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

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

(1)Windows:IIs验证,在内联网环境中非常有用。

(2)Passport:微软集中式身份验证,一次登录便可访问所有成员站点,需要收费。

(3)Form:窗体验证,验证帐号密码,Web编程最佳最流行的验证方式。

(4)None:表示ASP.NET自己根本不执行身份验证,完全依赖IIS身份验证。

4.认证和授权机制:


5.基于窗体的身份授权模式


6.<forms>元素的主要属性


from验证示例:

首先在web.config中加入以下代码:

<!--
            通过 <authentication> 节可以配置
            安全身份验证模式,ASP.NET 
            使用该模式来识别来访用户身份。 
        -->
        <!--<authentication mode="Windows" />-->
      <authentication mode="Forms">
        <forms loginUrl="login.aspx" defaultUrl="index.aspx">
          <credentials passwordFormat="Clear">
            <user name="admin" password="admin"/>
          </credentials>
        </forms>
      </authentication>
      <authorization>
        <deny users="?"/>
      </authorization>
        <!--
            如果在执行请求的过程中出现未处理的错误,
            则通过 <customErrors> 节
            可以配置相应的处理步骤。具体而言,
            开发人员通过该节可配置要显示的 html 错误页,
            以代替错误堆栈跟踪。

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->

创建三个页面分别是index.aspx,useraspx,login.aspx

login页面布局如下:


在按钮里添加事件如下:

protected void Button1_Click(object sender, EventArgs e)
        {
            string name = TextBox1.Text;
            string pwd = TextBox2.Text;
            if (FormsAuthentication.Authenticate(name,pwd))
            {
                    FormsAuthentication.RedirectFromLoginPage(name,false);
  //              Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile(pwd,"MD5"));
            }
            if (name == "admin" && pwd == "123456")
            {
                FormsAuthentication.RedirectFromLoginPage(name, false);
            }
            else if (name == "user" && pwd == "123456")
            {
                Response.Redirect("user.aspx");
            }
        }

以下是运行结果:


会跳转到index.aspx页面


输入另一个帐号密码会跳转到user.aspx页面



对密码进行加密可以修改以下代码:

 protected void Button1_Click(object sender, EventArgs e)
        {
            string name = TextBox1.Text;
            string pwd = TextBox2.Text;
            if (FormsAuthentication.Authenticate(name,pwd))
            {
                //FormsAuthentication.RedirectFromLoginPage(name, false);
                Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile(pwd,"MD5"));
            }
            //if (name == "admin" && pwd == "123456")
            //{
            //    FormsAuthentication.RedirectFromLoginPage(name, false);
            //}
            //else if (name == "user" && pwd == "123456")
            //{
            //    Response.Redirect("user.aspx");
            //}
        }

运行结果如下:


对密码进行加密有三种方式:


form验证总结:


猜你喜欢

转载自blog.csdn.net/qq706352062/article/details/79922856
今日推荐