安全验证
一、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验证总结: