網絡技術是從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代碼翻譯成在你的服務器端腳本編寫環境中所使用的語言。 網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!