[原创]小弟,刚刚开始学习asp.net,想对于登陆界面的设计,跟各位讨论
登陆界面就是要确认登陆者的身份,把登陆者输入的密码与数据库中的密码比较(我是这么思考的,我是按照c/s环境下考虑的,不知道在asp.net中是否是这样),但是我看了一些例子,好像都没有用到我所说的原理去做(可能是我的水平有限没有看出来),好像在客户端用javascript做的,我不知道在服务器端是否也可以进行验证?若能,应该如何做?这样是否会加大服务器的负载?
问题点数:0、回复次数:9Top
1 楼panyee(快乐王子)回复于 2003-08-02 00:07:43 得分 0
是可以那样, 不过不同的是,数据库中如果存明码,并不是很安全, 我建议你用户表中, 密码字段你存成密码的加密形式,
用脚本去验证时, 应该是把输入的用户名,密码用xmlhttp发到一个页面,让那个页面进行查询数据库的操作进行验证
验证时,把密码加密一下,再构造sql去查询数据库
加密的格式可以采用md5加密, 只要不容易还原密码就行了
服务器也不会有太大负载的Top
2 楼huangfei421(秋叶)回复于 2003-08-02 00:23:07 得分 0
使用ASP.NET加密口令
当我们在网站上建立数据库时,保护用户的信息安全是非常必要的。多数用户不愿意让别人知道自
己的信息,同时网管也不想因为安全问题而丢失网站的信誉。无论对于谁,安全问题都是非常重要的。
为了解决这个问题,我给大家提供一个简单实用,但是老套的方法,就是口令加密。在此我们使用ASP.NET技术对口令加密。简单的讲,就是将用户提供的口令加密之后,然后让它和存放于系统中的数据比较,如果相同,则通过验证。
在ASP中,并未提供加密的对象,我们只能使用外部的对象来进行加密。现在好了,在ASP.NET中提供了加密的解决方法。在名字空间System.Web.Security中包含了类FormsAuthentication,其中有一个方法HashPasswordForStoringInConfigFile。这个方法可以将用户提供的字符变成乱码,然后存储起来,甚至可以 存储在cookies中。
HashPasswordForStoringInConfigFile方法使用起来很简单,它支持"SHA1"和"MD5"加密算法。
下面的代码简单的演示了关于其用法:
<%@ Page language="c#" %>
<%@ Import Namespace="System.Web.Security" %>
<html>
<head>
<script language="C#" runat="server">
public void encryptString(Object sender, EventArgs e)
{
SHA1.Text = FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text,"SHA1");
MD5.Text =FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text, "MD5") ;
}
</script>
</head>
<body>
<form runat="server" ID="Form1">
<p>
<b>Original Clear Text Password: </b>
<br>
<asp:Textbox id="txtPassword" runat="server" />
<asp:Button runat="server" text="Encrypt String" onClick="encryptString" ID="Button1" />
</p>
<p>
<b>Encrypted Password In SHA1: </b>
<asp:label id="SHA1" runat="server" />
</p>
<p>
<b>Encrypted Password In MD5: </b>
<asp:label id="MD5" runat="server" />
</p>
</form>
</body>
</html>
正如你所看到的这样简单易用。我们可以把这段加密程序封装在一个函数里便于重复的使用。代码如下:
public string EncryptPassword(string PasswordString,string PasswordFormat )
{
if (PasswordFormat="SHA1"){
EncryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"SHA1");
}
elseif (PasswordFormat="MD5")
{ EncryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"MD5");
}
else
{
EncryptPassword="";
}
我们可以在数据库中添加一个字段,使用insert将加密的口令作为一个string存入数据库中。当用户登陆的时候,就可以将用户输入的口令加密结果和数据库中的正确结果比较,通过这种办法来验证口令的正确性了。在此,我就不往下写了,关于数据库的知识还得读者自己去学习。
Top
3 楼huangfei421(秋叶)回复于 2003-08-02 00:24:44 得分 0
转载
你可以做成pagelet.
其他的页面直接调用就行了。
Top
4 楼jvhmr(午后阳光)回复于 2003-08-02 02:54:17 得分 0
偶用vb.net写的:
----------------------------------------------------------------------------------
.aspx
<form id="Form1" runat="server">
<FONT face="宋体">
<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 233px; POSITION: absolute; TOP: 59px" runat="server" Width="85px" Height="27px"></asp:TextBox>
<asp:TextBox id="TextBox2" style="Z-INDEX: 102; LEFT: 236px; POSITION: absolute; TOP: 104px" runat="server" Width="88px" Height="28px"></asp:TextBox>
<asp:Label id="Label1" style="Z-INDEX: 103; LEFT: 170px; POSITION: absolute; TOP: 60px" runat="server" Width="50px" Height="28px">用户名</asp:Label>
<asp:Label id="Label2" style="Z-INDEX: 104; LEFT: 167px; POSITION: absolute; TOP: 111px" runat="server" Width="67px" Height="25px">用户密码</asp:Label>
<asp:Button id="Button1" style="Z-INDEX: 105; LEFT: 241px; POSITION: absolute; TOP: 191px" runat="server" Width="86px" Height="21px" Text="登陆"></asp:Button>
<asp:CheckBox id="CheckBox1" style="Z-INDEX: 106; LEFT: 240px; POSITION: absolute; TOP: 148px" runat="server" Width="72px" Height="21px" Text="记住我"></asp:CheckBox>
<div id="ErrorMessage" runat="server" />
<asp:Label id="Label3" style="Z-INDEX: 107; LEFT: 249px; POSITION: absolute; TOP: 233px" runat="server" Width="200px" Height="24px">Label</asp:Label>
</FONT>
</form>
.aspx.vb:
Imports System.Web.Security
Imports System.Data
Imports System.Data.SqlClient
Public Class WebForm11
Inherits System.Web.UI.Page
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents ErrorMessage As System.Web.UI.HtmlControls.HtmlGenericControl
Protected WithEvents SqlConnection1 As System.Data.SqlClient.SqlConnection
Protected WithEvents Label3 As System.Web.UI.WebControls.Label
Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox
#Region " Web 窗体设计器生成的代码 "
'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.SqlConnection1 = New System.Data.SqlClient.SqlConnection()
'
'SqlConnection1
'
Me.SqlConnection1.ConnectionString = "data source=JIANG;initial catalog=PoliceNet;persist security info=False;user id=s" & _
"a;workstation id=JIANG;packet size=4096"
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
End Sub
Function Verify(ByVal 用户 As String, ByVal 密码 As String)
Dim rd As SqlDataReader
SqlConnection1.Open()
Dim cmd As SqlCommand
cmd = New SqlCommand("SELECT * FROM GLY WHERE GLYId='" & 用户 & "' AND Password=" & 密码, SqlConnection1)
rd = cmd.ExecuteReader
If rd.Read() Then
SqlConnection1.Close()
Return True
Else
SqlConnection1.Close()
Label3.Text = "帐号或密码错误,请重新输入!"
Return False
End If
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Verify(TextBox1.Text, TextBox2.Text) Then
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, CheckBox1.Checked)
Else
Label3.Text = "帐号或密码错误,请重新输入!"
End If
End Sub
End Class
在web.config加入:
<customErrors mode="Off"/>
<authentication mode="Forms">
<forms name="AuthCookie"
path="/"
loginUrl="WebForm11.aspx"
protection="All"
timeout="30">
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
Top
5 楼liguiman(li)回复于 2003-08-02 06:58:53 得分 0
这样的登陆很多
多是在服务器上使用的
几乎没有在客户端的验证
这样比较安全,至于负担也不重
Top
6 楼pbtsingtao(追求到底)回复于 2003-08-05 15:42:10 得分 0
请问大虾,sha1,md5是什么加密技术,能否给小弟讲一讲,先谢为过Top
7 楼yjtc(灵长目)回复于 2003-08-05 16:05:30 得分 0
另一种方法:
=======================
按照登陆名称和密码查询用户信息表
select id from login_name = '登陆名称' and login_pw = '登陆密码'
判断,如果此查询生成的
dataset.table(...).row.count = 0
则说明就没有此用户(不存在对应的记录)。否则,登陆成功。
Top
8 楼seafarer777(手拿胡萝卜就敢装托塔李天王)回复于 2003-08-05 17:09:57 得分 0
^_^Top
9 楼lqdmafeng()回复于 2003-08-05 17:44:13 得分 0
在www.google.com中搜索“sha1,md5”,你可以看几天都看不完的Top




