SQL注入是一個安全問題,因為應用程式使用拼接SQL的技術而成為hacker攻擊背景的方式。下面就介紹一下3種SQL注入,及解決SQL注入的方法。
下面以登入的機制為例,進行SQL注入的講解。
1,基于 1=1 總為真
SELECT * FROM Users WHERE UserId = 105 OR 1=1;
黑客隻需在輸入字段中插入105或1=1,就可以通路資料庫中的所有使用者名和密碼。
2,基于 ""=""總為真
SELECT * FROM Users WHERE Name ="" or ""="" AND Pass ="" or ""=""
or “”=""總為真(等号左邊等于等号右邊)
3,基于批處理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();