天天看點

SQL注入問題及解決方法

  SQL注入是一個安全問題,因為應用程式使用拼接SQL的技術而成為hacker攻擊背景的方式。下面就介紹一下3種SQL注入,及解決SQL注入的方法。

下面以登入的機制為例,進行SQL注入的講解。

1,基于 1=1 總為真

SQL注入問題及解決方法
SELECT * FROM Users WHERE UserId = 105 OR 1=1;
           

黑客隻需在輸入字段中插入105或1=1,就可以通路資料庫中的所有使用者名和密碼。

2,基于 ""=""總為真

SQL注入問題及解決方法
SELECT * FROM Users WHERE Name ="" or ""="" AND Pass ="" or ""=""
           

or “”=""總為真(等号左邊等于等号右邊)

3,基于批處理SQL

SQL注入問題及解決方法
SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers;
           

删除表Suppliers,很明顯對資料庫進行破壞,可能造成背景癱瘓。

4,防止SQL注入的解決方法---使用SQL參數

txtUserId = getRequestString("UserId");
sql = "SELECT * FROM Customers WHERE CustomerId = @0";
command = new SqlCommand(sql);
command.Parameters.AddWithValue("@0",txtUserID);
command.ExecuteReader();