ASP開發網頁牢記註意事項選擇自RAINMAN_NET的Blog
關鍵字ASP開發網頁牢記註意事項
出處
永遠不要相信用戶輸入的內容具有適當的大小或者包含適當的字符。在使用其做出決策之前應該始終對用戶輸入進行驗證。最佳的選擇是創建一個COM+組件,這樣您可以從ASP頁面中調用該組件來驗證用戶的輸入內容。您也可以使用Server.HTMLEncode方法、Server.URLEncode方法,或者本頁底部代碼示例中的某一個。
不要通過連接用戶輸入的字符串來創建ASP頁中的數據庫連接字符串。惡意用戶可以通過在他們的輸入內容中插入代碼來獲取數據庫的訪問權限。如果您使用的是SQL數據庫,那麼請使用存儲過程創建數據庫連接字符串。
不要使用默認的SQL管理員帳戶名sa。每個使用SQL的用戶都知道存在sa帳戶。創建具有安全可靠密碼的其他SQL管理帳戶,並刪除sa帳戶。
在您存儲客戶端用戶密碼之前,請對這些密碼使用哈希算法、進行base64編碼,或者使用Server.HTMLEncode或者Server.URLEncode進行編碼。您還可以使用本頁底部的某個代碼示例驗證客戶端密碼中的字符。
不要把管理帳戶名或密碼放置在管理腳本或ASP頁中。
不要根據請求標題在代碼中做出決策,因為標題數據可以被惡意用戶偽造。在使用請求數據前,始終要對其進行編碼或者使用下面的代碼示例驗證其所包含的字符。
不要將安全數據存儲在Cookie中或者將輸入字段隱藏在網頁中。
始終將安全套接字層(SSL)用於基於會話的應用程序,以避免未對會話Cookie進行加密就發送它們所帶來的風險。如果會話Cookie沒有經過加密,則惡意用戶可以使用一個應用程序中的會話Cookie進入到與之在同一進程中的另一個應用程序。
當編寫ISAPI應用程序、篩選器或者COM+對象時,請注意由於變量和數據的大小而造成的緩衝區溢出。還要注意可能由於解釋造成的規範化問題,例如將絕對路徑名解釋成相對路徑名或URL。
當在單線程單元(STA)內運行的ASP應用程序切換到多線程單元(MTA)內時,模擬令牌將過時。這可能導致應用程序在無模擬的情況下運行,讓其用可能允許訪問其他資源的進程的標識有效地運行。如果您必須切換線程模型,請在進行更改之前,先禁用該應用程序並將其卸載。