1、ASP程序連接 SQL Server 的賬號不要使用sa,或任何屬于Sysadmin組的賬號,盡量避免應用服務(wù)有過(guò)高的權限,應使用一個(gè)db_owner權限的一般用戶(hù)來(lái)連接數據庫。
2、WEB應用服務(wù)器與DB服務(wù)器分別使用不同的機器來(lái)存放,并且之間最好通過(guò)防火墻來(lái)進(jìn)行邏輯隔離,因為除了有程序在探測 sa 沒(méi)密碼的SQL Server,SQL Server 本身及大量的擴展存儲過(guò)程也有被溢出攻擊的危險。
3、數據庫服務(wù)器盡量不要與公網(wǎng)進(jìn)行連接,如果一定要直接提供公網(wǎng)的連接存儲,應考慮使用一個(gè)非標準端口并限制IP地址來(lái)進(jìn)行連接。
4、SA一定要設成強悍的密碼,尤其是SQL Server 2000以前的版本,在默認安裝Sql時(shí)sa賬號沒(méi)有密碼,而一般管理員裝完后也忘了或怕麻煩而不更改密碼。
5、改掉缺省的Web虛擬路徑,不要使用IIS裝好后預設的<系統盤(pán)>\Inetpub\WWWRoot路徑,否則利用前面敘述的另存為方式,很容易在該目錄下動(dòng)手腳。
6、將平時(shí)不使用的但功能強大的擴展存儲過(guò)程刪除。
7、使用網(wǎng)絡(luò )和主機IDS來(lái)監控重要系統的運行狀況。
8、隨時(shí)注意是否有新的補丁需要補上,目前SQL2000最新的補本包為SP4。
9、盡量的利用ASP 或者 ASP.NET 在服務(wù)器端檢查與限制輸入變量的類(lèi)型與長(cháng)度,過(guò)濾掉不需要的內容。要注意的是這些檢查不只是要放在前端,后端也要檢測。 在前端利用Html Input 標簽的MaxLength屬性來(lái)限制輸入長(cháng)度,或是以Js cript編寫(xiě)程序來(lái)限定文本域的長(cháng)度,但是只要將該網(wǎng)頁(yè)另存為,修改內容后(一般只要改寫(xiě)Form的Action屬性以及Input的MaxLength屬性),重新用瀏覽器打開(kāi)更改過(guò)后的頁(yè)面就可以躲過(guò)這些瀏覽器前端的檢查。
10、使用容錯語(yǔ)句,不要顯示錯誤信息到前端,利用VBs cript語(yǔ)法的On Error Resume Next來(lái)屏蔽SQL的出錯提示,并搭配If Err.Number<>0 Then的錯誤處理方式,自行將錯誤重定向到適當的錯誤處理網(wǎng)頁(yè),如此系統將更穩固,且黑客也不容易透過(guò)錯誤信息來(lái)探知系統的內部運作方式?;蛘?,也可以修改<系統盤(pán)>\Winnt\Help\iisHelp\common\500-100.
11、使用過(guò)濾和防注入函數來(lái)過(guò)濾掉一些特殊的字符,防注入函數示例: ReqStr(" username ") & "'" 3.SQL="select * from username where UserName like '%" & ReqStr 13、使用Microsoft基線(xiàn)安全性分析器(MBSA)來(lái)評估服務(wù)器的安全性,并按照它的建議來(lái)更改系統的設定。 MBSA 是一個(gè)掃描多種Microsoft產(chǎn)品的不安全配置的工具,包括SQL Server和Microsoft SQL Server 2000 Desktop Engine(MSDE 2000)。它可以在本地運行,也可以通過(guò)網(wǎng)絡(luò )運行。 該工具針對下面問(wèn)題對SQL Server安裝進(jìn)行檢測: (1) 過(guò)多的sysadmin固定服務(wù)器角色成員。 (2) 授予sysadmin以外的其他角色創(chuàng )建CmdExec作業(yè)的權利。 (3) 空的或簡(jiǎn)單的密碼。 (4) 脆弱的身份驗證模式。 (5) 授予管理員組過(guò)多的權利。 (6) SQL Server數據目錄中不正確的訪(fǎng)問(wèn)控制表(ACL)。 (7) 安裝文件中使用純文本的sa密碼。 (8) 授予guest帳戶(hù)過(guò)多的權利。 (9) 在同時(shí)是域控制器的系統中運行SQL Server。 (10) 所有人(Everyone)組的不正確配置,提供對特定注冊表鍵的訪(fǎng)問(wèn)。 (11) SQL Server 服務(wù)帳戶(hù)的不正確配置。 (12) 沒(méi)有安裝必要的服務(wù)包和安全更新。
on error resume next
sql2="select * from dv_admin where username='"&ReqStr("username")&"'"
'----------------------------------- ----------------------------
Function ReqNum ( StrName ) /* 數值型變量過(guò)濾 */
ReqNum = Request ( StrName )
if Not isNumeric ( ReqNum ) then
Response.Write "參數必須為數字型!" Response.End
End if
End Function
Function ReqStr ( StrName ) /*字符型和搜索型過(guò)濾 */
ReqStr = Replace ( Request(StrName), "'", "''" ) /* 用replace函數屏蔽單引號 */
End Function
以下三句SQL語(yǔ)句,說(shuō)明一下調用方法:
1.SQL="select * from dv_admin where username=" & ReqNum("username")2.SQL="select * from
dv_admin where username ='" &
(" username ") & "%'"
12、若想更換SQL Server 的執行服務(wù)賬號,則該賬號需要以下的權限:
Log On Locally
Log On as a Batch
Access this computer from the Network
Log on as service
Replace a process level token
Act as part of the operating system
Increase quotas
聯(lián)系客服