ASP管理網頁的自動隨機密碼方案
發表于:2007-09-07來源:作者:點擊數:
標簽:
原密碼方案的弊端 我的網站為增強網站活力、分擔網站維護和管理工作,招收了一部分人員參與網站某些欄目的維護和管理。這些欄目一般用專用的ASP管理網頁進行管理(例如聊天室的踢人、從論壇刪除不合適的帖子等)。這些管理網頁同欄目網頁一樣,是在WWW上發布
原密碼方案的弊端
我的網站為增強網站活力、分擔網站維護和管理工作,招收了一部分人員參與網站某些欄目的維護和管理。這些欄目一般用專用的ASP管理網頁進行管理(例如聊天室的踢人、從
論壇刪除不合適的帖子等)。這些管理網頁同欄目網頁一樣,是在WWW上發布的,所以需要密碼保護。我們以前的密碼方案比較簡單,是利用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
運行后的界面如圖1所示:
圖 1
讀取、驗證、消除密碼
首先讀出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中,畢竟是很不安全的。
|
原文轉自:http://www.anti-gravitydesign.com