作 者 : 甘冀平
問題的引出
前幾日上網,看到有網友在電腦報論壇的ASP版提出如下的問題:“我試著用ASP的方法為網頁設置了口令,但
是用戶只要知道下一步鏈接的文件名, 就可以在地址欄輸入該文件名而繞過口令文件直接瀏覽該文件。 怎樣才能達到真
正加密的目的:如果不輸入口令、用戶名就無法瀏覽網頁?”
上面的問題,是在基于Internet/Intranet的網絡中開發WEB應用時,經常要涉及的一個方面。對于用ASP開發的
應用,根據個人經驗,解決上面的問題,一般有2種方法,分別詳細介紹如下:
例程說明
為說明方便起見,以下各方法假設針對如下的例子:
服務器IP地址為192.188.188.188;在服務器上開設一個虛擬目錄:/mytest,所有測試文件均位于此路徑下;
主文件為myindex.asp,用戶首要登錄文件為mylogin.asp;測試的合法用戶名為mytest,口令也為mytest。
解決方法1
- 編寫mylogin.asp內容
< %@ Language=VBScipt % >
< @Response.Buffer=true% >
< html >< head >< title >用戶登錄< /title >< /head >
< body >
< %
if request("username")="mytest" and request("password")="mytest" then
response.redirect "myindex.asp"
end if
% >
< font style="font-size:11pt" >請輸入登錄用戶名稱與口令"< /font >< br >
< form action="mylogin.asp" method="post" >
< br >用戶名稱:< input type=text name="username" >
< br >用戶口令:< input type=password name="password" >
< br >< input type=submit value="登錄" >
< /form >
< /body >< /html >
- 編寫一個ASP包含文件,名字為myrefer.asp
< %@ Language=VBScipt % >
< @Response.Buffer=true% >
< %
myvaild=instr(lcase(request("HTTP_REFERER")),"http://192.188.188.188/mytest")
if myvaild=0 then
response.redirect "mylogin.asp"
end if
% >
- 修改目錄下的其他ASP文件頭
修改目錄下的其余ASP,在每個ASP文件的頭部,都添加如下的代碼:
< %@ Language=VBScipt % >
< !-- #include file="myrefer.asp" -- >
'以下為原文件內容
......
解決方法2
- 編寫global.asa文件
編寫global.asa文件,放置在虛擬目錄http://192.188.188.188/mytest/下,為了達到用戶登錄檢查的目的,
只修改其中Session_OnStart的部分。
......
< Script RUNAT=Server Language=VBScript >
Sub Session_OnStart
mystartpage="/mytest/mylogin.asp"
mycurrent=lcase(request("SCRIPT_NAME"))
if strcomp(mycurrent,mystartpage) then
response.redirect mystartpage
end if
End Sub
< /Script >
......
總結
從以上2種實現方法可以看出,第2種比較簡單,但需要有單獨的虛擬目錄,這樣才能編寫global.asa文件使其
生效;第一種方法,雖然代碼比較多,但不是所有文件都必須在虛擬目錄中,這對于申請個人主頁的用戶,是比較可行的
一種方法。