每当我们要建立数据库驱动的个人化的web站点时都必须要保护用户的数据尽管黑客可以盗取个人的口令然而更严重的问题是有人能够盗走整个数据库然后立刻就是所有的口令
原理
有一个好的做法是不将实际的口令存储在数据库中而是存储它们加密后的版本当我们需要对用户进行鑒定时只是对用户的口令再进行加密然后将它与系统中的加密口令进行比较即可
在ASP中我们不得不借助外部对象来加密字符串而NET SDK解决了这个问题它在SystemWebSecurity名称空间中的FormsAuthentication类中提供了HashPasswordForStoringInConfigFile方法这个方法的目的正如它的名字所提示的就是要加密存储在Form表单的口令
例子
HashPasswordForStoringInConfigFile方法使用起来非常简单它支持用于加密字符串的SHA和MD散列算法为了看看HashPasswordForStoringInConfigFile方法的威力让我们创建一个小小的ASPNET页面并且将字符串加密成SHA和MD格式
下面是这样的一个ASPNET页面源代码
ASPX文件
<%@ Page language=c# Codebehind=loginformaspxcs AutoEventWireup=false Inherits=konsonlogloginform %>
<!DOCTYPE HTML PUBLIC //WC//DTD HTML Transitional//EN >
<HTML>
<HEAD>
<title>loginform</title>
<meta name=GENERATOR Content=Microsoft Visual Studio >
<meta name=CODE_LANGUAGE Content=C#>
<meta name=vs_defaultClientScript content=JavaScript>
<meta name=vs_targetSchema content=>
</HEAD>
<body MS_POSITIONING=GridLayout>
<form id=loginform method=post runat=server>
<table >
<tr>
<td >登录名</td>
<td><asp:TextBox id=userid runat=server Width=px></asp:TextBox></td>
</tr>
<tr>
<td >密码</td>
<td><asp:TextBox id=pwd runat=server Width=px></asp:TextBox></td>
</tr>
<tr>
<td ><asp:Button id=login runat=server Text=登 录></asp:Button></td>
<td><asp:Button ID=cancel Runat=server Text=取 消></asp:Button></td>
</tr>
</table>
</form>
</body>
</HTML>
Code Behind文件
using System;
using SystemCollections;
using SystemComponentModel;
using SystemData;
using SystemDrawing;
using SystemWeb;
using SystemWebSessionState;
using SystemWebUI;
using SystemWebUIWebControls;
using SystemWebUIHtmlControls;
using SystemWebSecurity;
namespace konsonlog
{
public class loginform : SystemWebUIPage
{
protected SystemWebUIWebControlsTextBox userid;
protected SystemWebUIWebControlsButton login;
protected SystemWebUIWebControlsButton cancel;
protected SystemWebUIWebControlsTextBox pwd;
string epwd;
private void Page_Load(object sender SystemEventArgs e)
{}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
baseOnInit(e);
}
private void InitializeComponent()
{
thisloginClick += new SystemEventHandler(thislogin_Click);
thisLoad += new SystemEventHandler(thisPage_Load);
}
#endregion
private void login_Click(object sender SystemEventArgs e)
{
epwd=FormsAuthenticationHashPasswordForStoringInConfigFile(pwdText SHA);
//epwd=FormsAuthenticationHashPasswordForStoringInConfigFile(pwdText MD);
ResponseWrite(epwd);
}
}
}
上面的代码中你只要把加密后的epwd串写时数据库就ok了
加密口令就是这么简单