從安全角度看合并第二種方法和第三種方法可能是最好的方法——只允許正確的輸入,然后搜索輸入中已知的錯誤數據。
帶有連接符號的姓名的問題對于體現合并兩種方法的必要性是一個好的例子:
Quentin Bassington-Bassington
我們必須在正確輸入中允許連接符號,但是我們也意識到字符序列'—'對SQL SERVER很重要。
當合并修改數據和字符序列確認時,會出現另一個問題。例如,如果我們應用一個錯誤過濾在除去單引號之后去探測'—','select'和'union',攻擊者可以輸入:
uni'on sel'ect @@version-'-
既然單引號被除去,攻擊者可以簡單地散布單引號在自己的錯誤的字符串中躲避被發現。
這有一些確認代碼的例子:
方法一:過濾單引號
function escape(input)
input=replace(input,"'","''")
escape=input
end function
方法二:拒絕已知的錯誤輸入
function validate_string(input)
known_bad=array("select","insert","update","delete","drop","—","'")
validate_string=true
for i=lbound(known_bad) to ubound(known_bad)
if(instr(1,input,known_bad(i),vbtextcompare)<>0) then
validate_string=false
exit function
end if
next
end function
方法三:只允許正確的輸入
function validatepassword(input)
good_password_chars=” abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”
validatepassword=true
for i=1 to len(input)
c=mid(input,I,1)
if(InStr(good_password_chars,c)=0) then
validatepassword=false
exit function
end if
next
end function
[SQL SERVER鎖定]
在這指出的重要一點是鎖定SQL SERVER是必要的;外面的是不安全的。這是一個但創建SQL SERVER時需要做的事情的簡短的列表:
1.確定連接服務器的方法
a.確定你所使用的網絡庫是可用的,那么使用"Network Utility"
2.確定哪些帳戶是存在的
a.為應用程序的使用創建一個低權限的帳戶
b.刪除不必要的帳戶
c.確定所有帳戶有強壯的密碼;執行密碼審計
3.確定哪些對象存在
a.許多擴展存儲過程能被安全地移除。如果這樣做了,應該移除包含在擴展存儲過程代碼中的'.dll'文件
b.移除所有示例數據庫——例如'northwind'和'pubs'數據庫
4.確定哪寫帳戶能過使用哪些對象
a.應用程序進入數據庫所使用的帳戶應該有保證能夠使用它需要的對象的最小權限
5.確定服務器的補丁
a.針對SQL SERVER有一些緩沖區溢出和格式化字符串攻擊,也有一些其他的安全補丁發布。應該存在很多。
6.確定什么應該被日志記錄,什么應該在日志中結束。
[參考文獻]
[1] Web Application Disassembly with ODBC Error Messages, David Litchfield
http://www.nextgenss.com/papers/webappdis.doc
[2] SQL Server Security Checklist
http://www.sqlsecurity.com/checklist.asp
[3] SQL Server 2000 Extended Stored Procedure Vulnerability
http://www.atstake.com/research/advisories/2000/a120100-2.txt
[4] Microsoft SQL Server Extended Stored Procedure Vulnerability
http://www.atstake.com/research/advisories/2000/a120100-1.txt
[5] Multiple Buffer Format String Vulnerabilities In SQL Server
http://www.microsoft.com/technet/security/bulletin/MS01-060.asp
http://www.atstake.com/research/advisories/2001/a122001-1.txt
文章來源于領測軟件測試網 http://www.kjueaiud.com/