我們以前的密碼方案比較簡單,是利用ASP判別指令檢測提交網頁的提交密碼。例如: <% if request(“PWD”)=“password” then %> ……(管理網頁內容) <% else response.write “密碼錯誤” end if%> 這個方案顯然存在很多弊端,例如,由于某些軟件的安全漏洞,使源代碼被下載,造成失密;學生網管更換,密碼流失;每次更換密碼不得不修改源代碼,增加了工作量等。針對這些問題的解決方案有許多種,如設置權限、IP地址檢測等等。本文介紹一種自動隨機密碼方案,該方法不但簡單,而且具有較高的安全性。 產生隨機密碼 首先編制一個在WWW服務器上本地運行的產生隨機密碼的程序,并將該隨機密碼寫入與ASP管理網頁同一子目錄內的一個文本文件password.txt中。此部分可以用任何開發語言編寫,筆者使用的是VB。該程序非常簡單,控件只有一個LABLE、一個TEXT和一個COMMAND。主要源代碼如下: Private Sub Form_Load() Dim UpperBound, LowerBound, MyValue As Double '密碼的最高數值 UpperBound = 10000000000# '密碼的最低數值 LowerBound = 1 '隨機密碼種子按時間取值 Randomize '取得隨機密碼 MyValue = Int((UpperBound - LowerBound + 1) * Rnd + LowerBound) '顯示隨機密碼 Text1.Text = MyValue '將密碼寫入文本文件 Open “……(ASP管理網子目錄)/password.txt” For Output As #1 write #1, MyValue Close #1 End Sub
讀取、驗證、消除密碼 首先讀出password.txt文件內的密碼,然后再對password.txt文件進行覆蓋,寫入一個不能通過管理網頁檢測的字符串,例如“nopass”。這樣隨機產生的密碼就消失了,即使password.txt和管理網頁源文件被下載,仍然無法通過管理網頁的密碼檢測。ASP管理網頁的操作和檢測代碼如下: <% dim pswd1,pswd2 whichfile=server.mappath(“password.txt”) set fs=createobject(“scripting.filesystemobject”) set thisfile=fs.opentextfile(whichfile) ’讀取密碼 pswd1=thisfile.readline thisfile.close paswd2=“nopass” set out=fs.createtextfile(whichfile) ’覆蓋密碼 out.writeline(paswd2) out.close set fs=nothing ’和提交的密碼對比以及驗證密碼是否有效 if request(“PWD”) =pswd1 and pswd1 <> pswd2 then %> ……(管理網頁內容) <% else response.write “密碼錯誤” end if %> 小 結 需要注意的是:在運行自動密碼程序后,最好馬上啟動管理網頁讀取和消除密碼,否則把密碼存在password.txt中,畢竟是很不安全的。
|