用户登录  |  傲看软件园 用户注册
文章中心广告代码ASP源码PHP源码JSP源码.NET源码源码相关傲看留言板繁體中文
当前位置:傲看软件园文章中心电脑安全安防业界

用户口令保护新招(2)

减小字体 增大字体 作者:郁郁小蝎  来源:中国站长学院  发布时间:2008-10-20 20:22:45
  以下内容就是一个在ASP环境下实现的登录表格login.asp。你可以进行在线模拟登录模拟用户名为jason, 用户口令为f2#5%rsq。

<%@ LANGUAGE = "JScript" %>
<HTML>
<HEAD>
<TITLE>Please log in!</TITLE>
<% Session("sharedValue") = Math.random().toString() %>
<SCRIPT LANGUAGE="JavaScript" SRC="md5.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
var sharedValue = "<% =Session("sharedValue") %>"
function handleLogin() {
sendMD5Value(calculateMD5Value())
}
function calculateMD5Value() {
var pw = document.forms["login"].elements["password"].value
pw += sharedValue
return calcMD5(pw)
}
function sendMD5Value(hash) {
document.forms["login"].elements["password"].value = hash
document.forms["login"].submit()
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="login" METHOD="POST" ACTION="checkpassword.asp">
User ID: <INPUT TYPE="TEXT" NAME="userid" SIZE="40"><BR>
Password: <INPUT TYPE="PASSWORD" NAME="password" SIZE="40"><BR>
<INPUT TYPE="BUTTON" NAME="startLogin" VALUE="Login" >
</FORM>
</BODY>
</HTML>

  以上内容中只有三行包含ASP脚本。(在<%和%>之间的内容为ASP脚本。)文件的第一行把ASP语言确定为JScript 。

<%@ LANGUAGE = "JScript" %>

  在第二行ASP中,名为“sharedValue”的服务器端会话变量的值被设置成随机浮点数的字符串表示形式“String”。在用户会话的全过程中,这个会话变量会存在于服务器中。

<% Session("sharedValue") = Math.random().toString() %>

  下面一行将名为“sharedValue”的用户端JavaScript变量设置为同名的服务器端变量的值。

var sharedValue = "<% =Session("sharedValue") %>"

  用户在表格中输入他的用户名和口令,并点击“登录”键,这样就会激活handlelogin()函数。handlelogin()函数启动calculateMD5Value()函数,为用户口令附加随机值并计算出相应的MD5值。接着,sendMD5Value()函数会收取这个值,并以之替换原表格中所填写的用户口令,最后提交表格。

  这里有一点应注意:单独一行的SCRIPT标记表示脚本中包含md5.js文件。以上就是MD5的实现,你可以(而且应该)从Paul Johnston的站点上拷贝此算法。calculateMD5Value()函数所使用的calcMD5()函数在md5.js中有详细定义。

  在服务器一方,我们使用一个名为checkpassword.asp的ASP脚本对用户名 和MD5值进行确认。此脚本内容如下:

<%@ LANGUAGE = "JScript" %>
<!--#include file ="md5.inc"-->
<%
function calculateMD5Value() {
var pw = "" + Application(Request.Form("userid"))
pw += Session("sharedValue")
return calcMD5(""+pw)
}
clientPassword = Request.Form("password")
serverPassword = calculateMD5Value()
if(clientPassword == serverPassword) Response.Redirect("page1.htm")
else Response.Redirect("tryagain.htm")
%>

  下面一行表示在checkpassword.asp脚本中包含文件md5.inc(在服务器端):

<!--#include file ="md5.inc"-->

  这个文件就是处在ASP的<% 和 %>标记之间的文件md5.js。标准ASP语言都带inc.后缀。

  另一个服务器端脚本描述了calculateMD5Value()函数。字段Request.Form("userid")把用户在提交表格时所输入的用户名返回。通过返回的用户名在一个应用变量中找到真正的用户口令值。(如果你打算使用ASP,你可能希望使用另一种办法,让脚本可以通过其它方式获取口令。)使用pw变量储存用户口令。从会话变量中取回发送给用户的原始随机值,并附加到用户口令上。然后,函数对附加了随机值的用户口令进行计算并将所得结果返回。

function calculateMD5Value() {
var pw = "" + Application(Request.Form("userid"))
pw += Session("sharedValue")
return calcMD5(""+pw)
}

  用户身份认证这一过程的核心部分是由四行代码来执行完成,这四行代码均使用calculateMD5Value()函数。由用户提交的MD5口令被划为“客户口令”(clientPassword)变量,由服务器计算得出的值被划为“服务器口令”(serverPassword)变量。将这两个值进行比较。如果两值相符,那么用户浏览器就会打开page1.htm,这是已写保护的网络应用的首页。如果两值不符,用户浏览器会打开tryagain.htm,用户被告知此次登录失败,需要重新登录。

clientPassword = Request.Form("password")
serverPassword = calculateMD5Value()
if(clientPassword == serverPassword) Response.Redirect("page1.htm")
else Response.Redirect("tryagain.htm")

  要制作这一脚本,只要把page1.html定义为需写保护的Web应用的首页。如果你不使用ASP,那么你就要把ASP代码翻译成在你的服务器端脚本编写环境中所使用的语言。

Tags:

作者:郁郁小蝎

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

精品栏目导航

关于本站 | 网站帮助 | 广告合作 | 下载声明 | 友情连接 | 网站地图
冀ICP备08004437号 | 客服Q:354766721 | 交流群83228313
傲看软件园 - 绿色软件,破解软件下载站! 源码网 源码之家 绿软之家
Copyright © 2003-2010 OkHan.Net. All Rights Reserved .
页面执行时间:5,437.50000 毫秒
Powered by:OkHan CMS Version 4.0.0 SP2