標籤:style code color c http 檔案
保護ASP指令碼原始碼
於 Server端的指令碼運行環境,它簡單易用,不需要編譯和串連,指令碼可以在 Server端直接運行,並且它支援多使用者、多線程,在 Web開發中得到了廣泛的應用。
但是,因為 ASP指令碼是純文字格式,所以惡意者通過原始碼可以很容易地看到原本不該看到的頁面內容。例如, ASP原始碼中通常有系統資料庫的串連使用者名稱和口令,惡意者利用此使用者名稱和口令可以輕鬆地查看資料庫中的所有資訊(包括系統機密資訊),還可能篡改庫中資訊,造成系統嚴重損壞。因此,保護 ASP指令碼的原始碼顯得非常重要。
保護 ASP指令碼原始碼通常可採用 3種方式:第一種方式是對訪問使用者進行限制,禁止非法使用者訪問;第二種方式是對 Server端環境進行處理,提高系統的健壯性;第三種方式是對原始碼進行加工,隱藏或部分隱藏指令碼原始碼。這 3種方式互為補充,有效設定可以提高指令碼原始碼的安全性。下面簡單介紹這 3種方式的實現方法。
限制訪問使用者
所謂限制訪問使用者是指只有授權的使用者才能訪問系統的 ASP指令碼。這主要有兩種實現方法:第一種方法是通過 SSL( Secure Socket Layer)方法, Server端向 Client端發放認證(可以利用免費認證管理軟體), Client端將認證添加到瀏覽器中,只有擁有合法認證的使用者才能與 Server端建立連結,從而訪問系統。這種方法不需要編程,安全性較高,但認證的下發比較麻煩。另一種方法是通過常用的驗證使用者名稱、口令方法,使用者登入時必須首先輸入使用者名稱和口令,只有合法的使用者名稱和口令才能訪問系統。這種方法安全性稍低,編程比較簡單。而且在實現時需要注意:不能簡單地在登入視窗進行判別,因為如果使用者知道了登入視窗下一步連結的檔案名稱,可以直接在地址欄輸入該檔案名稱而繞過登入視窗。編程時可以在除登入視窗檔案外的每個檔案的開頭檢查 Request(“ HTTP_REFERENCE")項的 IP地址,看其是否是由系統內部的檔案跳轉而來,如不是則跳轉到登入視窗。代碼如下:
<%
dim iValid
iValid=instr(Request(“ HTTP_REFERENCE"),
“ http://131.252.88.71")
if iValid= 0 then
Response.Redirect“ login.asp"
end if
......
% >
對 Server端進行處理
對 Server端進行處理主要有 3種方法:
●對系統許可權進行設定
對 Server端設定詳細的安全許可權,除了系統管理員,盡量降低使用者的存取許可權;刪除不必要的共用,包括印表機的共用;關閉匿名服務等一些不必要的功能;對 ASP原始碼的目錄設定詳盡的存取權限,關閉“讀”許可權。
●經常下載安全補丁
一些惡意者經常利用系統的安全缺陷得到 ASP指令碼的原始碼。例如,利用 ::$ DATA可以得到 ASP指令碼的原始碼,或利用 Windows NT的一些安全缺陷可以登入到系統,查看系統的目錄和檔案,所以需要經常下載並安裝微軟公司提供的安全補丁。
●盡量不要在系統中下載、安裝不必要的軟體
一些下載軟體帶有“後門”,會將指令碼原始碼泄露。例如,微軟有一個專門查看 ASP指令碼原始碼的程式 code.asp,如果把它放到 Web伺服器上,別人可以很容易地查看 ASP指令碼原始碼(網上有不少類似免費軟體)。
處理 ASP指令碼原始碼
對 ASP指令碼原始碼進行處理主要有兩種方法:
●對 ASP指令碼原始碼進行加密
利用微軟的 Windows Script Encoder,可以對 ASP指令碼原始碼進行加密。不過用戶端加密後,只有 IE 5才能執行;伺服器端指令碼加密後,只有伺服器上安裝有 Script Engine 5才能執行。
Windows Script Encoder是一個簡單的命令列加密工具,可以利用它加密 ASP指令碼的原始碼。加密後,無論 Server端和 Client端都無法讀懂加密後的資訊,如果改動加密後的資訊,指令碼就無法正常運行,從而有效地保護了 ASP指令碼原始碼。
例如 ASP檔案 Test.asp中有如下一條語句:
<html> <body>
<%
Response.Write“ 123456”
% >
</body></html>
在 DOS方式下運行加密命令 : screnc c:\backiis\test.asp c:\backiis\testenc.asp
在 testenc.asp中儲存加密後代碼,代碼如下:
<html><body>
<%# @~ ^[email protected]# @& 7"+ kwW/? ? MkO+ ,Jq+ 2c*+ [email protected]# @& YQcAAA==^#~ @% >
</body></html>
將 test.asp檔案儲存到另外一台機器上, Client端可以正常訪問 testenc.asp(訪問是透明的,就像訪問 test.asp一樣 ),但無論 Server端和 Client端都無法查看 test.asp指令碼原始碼。