我運行的ASPX和SQL Server支持的Web應用程序,現在我想禁用多個語句的執行,如select 1,2,3; select 1,2,3
在SQL Server中禁用多個語句?
所以,我可以禁用該功能,或是否需要修改連接字符串,使這行得通?
我運行的ASPX和SQL Server支持的Web應用程序,現在我想禁用多個語句的執行,如select 1,2,3; select 1,2,3
在SQL Server中禁用多個語句?
所以,我可以禁用該功能,或是否需要修改連接字符串,使這行得通?
Microsoft SQL Server沒有限制每批語句數量的選項。
雖然有些SQL注入攻擊依賴於在批處理中注入額外語句,但其他SQL語句只是試圖將語句隨時更改爲自己的優勢。通過實施這個想法可以防止第一種類型。但是,第二種類型不能。
SQL注入的標準的例子是登錄查詢:
SELECT * FROM dbo.users WHERE user_name = '?' and password = '?';
如果使用手動參數替代和攻擊類型
admin';--
用戶名和任何密碼,應用程序獲取如果真正的管理員輸入了正確的密碼,它將從數據庫獲得相同的響應。
在這次攻擊中,批處理仍然只包含一個語句,所以你的「技巧」不會阻止它。
總的來說,最好是首先防止注射。在使用它構建任何類型的動態語句(不僅僅是SQL語句)之前,請始終驗證所有用戶輸入。
在SQL中使用預準備語句或存儲過程並使用API函數替換參數值。
一個很好的起點爲防注入的模式是這樣的TechNet文章:http://technet.microsoft.com/en-us/library/ms161953(v=sql.105).aspx
你不能。除此之外,你爲什麼要這樣做? –
您是否試圖保護自己免受SQL注入? –
@ MarkStorey-Smith我發現MySQL可以手動禁用該功能,然後我想到了MSSQL。請檢查我的回覆Sebastian – daisy