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