2015-03-03 58 views

回答

0

SQL注入是代碼注入技術,用來攻擊數據驅動的應用程序,其中惡意的SQL語句被插入到一個輸入字段以供執行(例如轉儲數據庫內容給攻擊者)。

http://en.wikipedia.org/wiki/SQL_injection

如何:防止SQL注入在ASP.NET

https://msdn.microsoft.com/en-us/library/ff648339.aspx

https://msdn.microsoft.com/en-us/magazine/cc163917.aspx

下面是一些提示:

  • 永遠不要相信用戶的輸入。

  • 始終使用參數化存儲過程。

  • 總是對用戶輸入進行編碼/解碼。

  • 請勿寫入內嵌查詢。

  • 在客戶端和 服務器側

https://msdn.microsoft.com/en-us/library/hh882339%28v=vs.110%29.aspx

http://www.asp.net/whitepapers/request-validation

+0

請將報價格式化爲報價,因此很明顯,內容是從列出的來源中提取的。 – Tanner 2015-03-03 09:53:02

0

在簡單的語言的特殊字符(<,>)始終驗證用戶輸入,SQLI或SQL注入攻擊是攻擊這使得應用程序將數據視爲命令。例如,假設您有使用下面的SQL語句的認證系統:

SELECT * 
FROM userlist 
WHERE name ='" + username + "'; 

現在,假設攻擊者進入下面的用戶名:

username = ' OR '1'='1 

這將創建一個查詢,這將是這樣的:

SELECT * 
FROM userlist 
WHERE username=' ' OR '1'='1'; 

因此,由於OR條件始終評估爲true,所以繞過驗證作爲查詢的結果將始終返回有效的響應。 這是一個基本的SQLi攻擊。您可以將多個查詢組合,如:

DROP TABLE userlist; 

追加它原來的查詢以下列方式:

SELECT * 
FROM userlist 
WHERE username=' ' OR '1'='1';DROP TABLE userlist; 

它將從數據庫中刪除名爲「用戶列表」表。

希望有幫助。