网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。 以下内容就是一个在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" onClick="handleLogin()"> </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代码翻译成在你的服务器端脚本编写环境中所使用的语言。 网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。 |
温馨提示:喜欢本站的话,请收藏一下本站!