ASP開發網頁需要牢記的注意事項,使用asp的朋友可以看看步 驟
1.永遠不要相信使用者輸入的內容具有適當的大小或包含適當的字元。在使用其做出決策之前應該始終對使用者輸入進行驗證。最佳的選擇是建立一個COM+ 元件,這樣您可以從ASP 頁面中呼叫該元件來驗證使用者的輸入內容。您也可以使用Server.HTMLEncode 方法、Server.URLEncode 方法,或是本頁底部程式碼範例中的某一個。
2、不要透過連接使用者輸入的字串來建立ASP 頁中的資料庫連接字串。惡意使用者可以透過在他們的輸入內容中插入程式碼來取得資料庫的存取權限。如果您使用的是SQL 資料庫,那麼請使用預存程序建立資料庫連接字串。
3、不要使用預設的SQL 管理員帳號名稱sa。每個使用SQL 的使用者都知道存在sa 帳戶。建立具有安全可靠密碼的其他SQL 管理帳戶,並刪除sa 帳戶。
4、在您儲存客戶端使用者密碼之前,請對這些密碼使用雜湊演算法、進行base64 編碼,或使用Server.HTMLEncode 或Server.URLEncode 進行編碼。您也可以使用本頁底部的某個程式碼範例驗證客戶端密碼中的字元。
5、不要把管理帳號名稱或密碼放置在管理腳本或ASP 頁中。
6、不要根據請求標題在程式碼中做出決策,因為標題資料可以被惡意使用者偽造。在使用請求資料之前,請務必對其進行編碼或使用下面的程式碼範例驗證其所包含的字元。
7、不要將安全資料儲存在Cookie 中或將輸入欄位隱藏在網頁中。
始終將安全通訊端層(SSL) 用於基於會話的應用程序,以避免未對會話Cookie 進行加密就發送它們所帶來的風險。如果會話Cookie 沒有經過加密,則惡意使用者可以使用一個應用程式中的會話Cookie 進入到與之在同一流程中的另一個應用程式。
8、當編寫ISAPI 應用程式、篩選器或COM+ 物件時,請注意因變數和資料的大小而造成的緩衝區溢位。也要注意可能由於解釋造成的規範化問題,例如將絕對路徑名解釋成相對路徑名或URL。
9、當在單線程單元(STA) 內運行的ASP 應用程式切換到多線程單元(MTA) 內時,模擬令牌將過時。這可能導致應用程式在無模擬的情況下運行,讓其用可能允許存取其他資源的進程的標識有效地運行。如果您必須切換線程模型,請在進行更改之前,先停用該應用程式並將其卸載。
程式碼範例
本程式碼範例包含了一個函數,它可刪除傳送至該函數的字串中的可能有害的字元。在上面的兩個範例中,指定代碼頁以確保正確地編碼。下面的範例使用的是Microsoft Visual Basic® Scripting Edition(VBScript):
<%@ LANGUAGE=VBScript %> <% Response.CodePage = 1252 Response.Write(Hello, & RemoveBadCharacters(Request.Form(UserName))) Response.Write(<BR>This is why you received an error:) Function RemoveBadCharacters(strTemp) Dim regEx Set regEx = New RegExp regEx.Pattern = [^/s/w] regEx.Global = True RemoveBadCharacters = regEx.Replace(strTemp, ) End Function %> |
下面的範例使用的是Microsoft JScript®:
<%@ LANGUAGE=JScript %> <% Response.CodePage = 1252; Response.Write(Hello, + RemoveBadCharacters(Request.Form(UserName))); Response.Write(<BR>This is why you received an error:); function RemoveBadCharacters(strTemp) { strTemp = strTemp.replace(/[^/s/w]/g,); return strTemp; } %> |