我們以前的密碼方案比較簡(jiǎn)單,是利用ASP判別指令檢測(cè)提交網(wǎng)頁(yè)的提交密碼。例如: <% if request(“PWD”)=“password” then %> ……(管理網(wǎng)頁(yè)內(nèi)容) <% else response.write “密碼錯(cuò)誤” end if%> 這個(gè)方案顯然存在很多弊端,例如,由于某些軟件的安全漏洞,使源代碼被下載,造成失密;學(xué)生網(wǎng)管更換,密碼流失;每次更換密碼不得不修改源代碼,增加了工作量等。針對(duì)這些問(wèn)題的解決方案有許多種,如設(shè)置權(quán)限、IP地址檢測(cè)等等。本文介紹一種自動(dòng)隨機(jī)密碼方案,該方法不但簡(jiǎn)單,而且具有較高的安全性。 產(chǎn)生隨機(jī)密碼 首先編制一個(gè)在WWW服務(wù)器上本地運(yùn)行的產(chǎn)生隨機(jī)密碼的程序,并將該隨機(jī)密碼寫(xiě)入與ASP管理網(wǎng)頁(yè)同一子目錄內(nèi)的一個(gè)文本文件password.txt中。此部分可以用任何開(kāi)發(fā)語(yǔ)言編寫(xiě),筆者使用的是VB。該程序非常簡(jiǎn)單,控件只有一個(gè)LABLE、一個(gè)TEXT和一個(gè)COMMAND。主要源代碼如下: Private Sub Form_Load() Dim UpperBound, LowerBound, MyValue As Double '密碼的最高數(shù)值 UpperBound = 10000000000# '密碼的最低數(shù)值 LowerBound = 1 '隨機(jī)密碼種子按時(shí)間取值 Randomize '取得隨機(jī)密碼 MyValue = Int((UpperBound - LowerBound + 1) * Rnd + LowerBound) '顯示隨機(jī)密碼 Text1.Text = MyValue '將密碼寫(xiě)入文本文件 Open “……(ASP管理網(wǎng)子目錄)/password.txt” For Output As #1 write #1, MyValue Close #1 End Sub
讀取、驗(yàn)證、消除密碼 首先讀出password.txt文件內(nèi)的密碼,然后再對(duì)password.txt文件進(jìn)行覆蓋,寫(xiě)入一個(gè)不能通過(guò)管理網(wǎng)頁(yè)檢測(cè)的字符串,例如“nopass”。這樣隨機(jī)產(chǎn)生的密碼就消失了,即使password.txt和管理網(wǎng)頁(yè)源文件被下載,仍然無(wú)法通過(guò)管理網(wǎng)頁(yè)的密碼檢測(cè)。ASP管理網(wǎng)頁(yè)的操作和檢測(cè)代碼如下: <% 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 ’和提交的密碼對(duì)比以及驗(yàn)證密碼是否有效 if request(“PWD”) =pswd1 and pswd1 <> pswd2 then %> ……(管理網(wǎng)頁(yè)內(nèi)容) <% else response.write “密碼錯(cuò)誤” end if %> 小 結(jié) 需要注意的是:在運(yùn)行自動(dòng)密碼程序后,最好馬上啟動(dòng)管理網(wǎng)頁(yè)讀取和消除密碼,否則把密碼存在password.txt中,畢竟是很不安全的。
|
溫馨提示:喜歡本站的話(huà),請(qǐng)收藏一下本站!