在C#中,使用SqlParameter類可以有效防止SQL注入攻擊。SqlParameter類將參數與SQL查詢分開,確保用戶輸入的數據不會被解釋為SQL代碼。以下是如何使用SqlParameter來防止SQL注入的示例:
首先,確保已經安裝了System.Data.SqlClient命名空間。
using System.Data;
using System.Data.SqlClient;
然后,創建一個SqlConnection對象和一個SqlCommand對象,并將SqlParameter對象添加到SqlCommand的Parameters集合中。
string connectionString = "your_connection_string";
string queryString = "SELECT * FROM Users WHERE Username = @Username AND Password = @Password";
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand(queryString, connection))
{
// 添加參數
SqlParameter usernameParam = new SqlParameter("@Username", SqlDbType.VarChar) { Value = "username_value" };
SqlParameter passwordParam = new SqlParameter("@Password", SqlDbType.VarChar) { Value = "password_value" };
command.Parameters.Add(usernameParam);
command.Parameters.Add(passwordParam);
// 打開連接并執行查詢
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// 處理結果
while (reader.Read())
{
// ...
}
}
}
在這個示例中,我們使用@Username和@Password作為參數占位符,并將它們與實際的值一起添加到SqlCommand的Parameters集合中。這樣,即使用戶嘗試在用戶名或密碼中插入惡意SQL代碼,也不會影響查詢的安全性。