1、ASP程序連接 SQL Server 的賬號不要使用sa,或任何屬于Sysadmin組的賬號,盡量避免應用服務有過高的權限,應使用一個db_owner權限的一般用戶來連接數據庫。
2、WEB應用服務器與DB服務器分別使用不同的機器來存放,并且之間最好通過防火墻來進行邏輯隔離,因為除了有程序在探測 sa 沒密碼的SQL Server,SQL Server 本身及大量的擴展存儲過程也有被溢出攻擊的危險。
3、數據庫服務器盡量不要與公網進行連接,如果一定要直接提供公網的連接存儲,應考慮使用一個非標準端口并限制IP地址來進行連接。
4、SA一定要設成強悍的密碼,尤其是SQL Server 2000以前的版本,在默認安裝Sql時sa賬號沒有密碼,而一般管理員裝完后也忘了或怕麻煩而不更改密碼。
5、改掉缺省的Web虛擬路徑,不要使用IIS裝好后預設的<系統盤>InetpubWWWRoot路徑,否則利用前面敘述的另存為方式,很容易在該目錄下動手腳。
6、將平時不使用的但功能強大的擴展存儲過程刪除。
7、使用網絡和主機IDS來監控重要系統的運行狀況。
8、隨時注意是否有新的補丁需要補上,目前SQL2000最新的補本包為SP4。
9、盡量的利用ASP 或者 ASP.NET 在服務器端檢查與限制輸入變量的類型與長度,過濾掉不需要的內容。要注意的是這些檢查不只是要放在前端,后端也要檢測。 在前端利用Html Input 標簽的MaxLength屬性來限制輸入長度,或是以JScript編寫程序來限定文本域的長度,但是只要將該網頁另存為,修改內容后(一般只要改寫Form的Action屬性以及Input的MaxLength屬性),重新用瀏覽器打開更改過后的頁面就可以躲過這些瀏覽器前端的檢查。
10、使用容錯語句,不要顯示錯誤信息到前端,利用VBScript語法的On Error Resume Next來屏蔽SQL的出錯提示,并搭配If Err.Number<>0 Then的錯誤處理方式,自行將錯誤重定向到適當的錯誤處理網頁,如此系統將更穩固,且黑客也不容易透過錯誤信息來探知系統的內部運作方式。或者,也可以修改<系統盤>WinntHelpiisHelpcommon500-100.asp預設網頁,最簡單的方式就是將它改名。例:
|
11、使用過濾和防注入函數來過濾掉一些特殊的字符,防注入函數示例:
|
13、使用Microsoft基線安全性分析器(MBSA)來評估服務器的安全性,并按照它的建議來更改系統的設定。
MBSA 是一個掃描多種Microsoft產品的不安全配置的工具,包括SQL Server和Microsoft SQL Server 2000 Desktop Engine(MSDE 2000)。它可以在本地運行,也可以通過網絡運行。
該工具針對下面問題對SQL Server安裝進行檢測:
(1) 過多的sysadmin固定服務器角色成員。
(2) 授予sysadmin以外的其他角色創建CmdExec作業的權利。
(3) 空的或簡單的密碼。
(4) 脆弱的身份驗證模式。
(5) 授予管理員組過多的權利。
(6) SQL Server數據目錄中不正確的訪問控制表(ACL)。
(7) 安裝文件中使用純文本的sa密碼。
(8) 授予guest帳戶過多的權利。
(9) 在同時是域控制器的系統中運行SQL Server。
(10) 所有人(Everyone)組的不正確配置,提供對特定注冊表鍵的訪問。
(11) SQL Server 服務帳戶的不正確配置。
(12) 沒有安裝必要的服務包和安全更新。