隨機|隨機密碼|網頁 我們以前的密碼方案比較簡單,是利用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中,畢竟是很不安全的。