欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-14 22:54:22
...

安全验证

一、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.认证和授权机制:

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

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

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

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

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

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页面布局如下:

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

在按钮里添加事件如下:

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");
            }
        }

以下是运行结果:

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

会跳转到index.aspx页面

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

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

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

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

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

 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");
            //}
        }

运行结果如下:

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

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

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

form验证总结:

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