在C#中,使用SQLHelper類來防止SQL注入的關鍵是使用參數化查詢。參數化查詢是一種將查詢和數據分開的方法,它可以確保用戶輸入的數據不會被解釋為SQL代碼的一部分。這樣可以有效防止SQL注入攻擊。
以下是一個使用SQLHelper類進行參數化查詢的示例:
首先,創建一個SQLHelper類,用于封裝數據庫操作:
public static class SQLHelper
{
private static string _connectionString = "your_connection_string";
public static DataTable ExecuteQuery(string query, SqlParameter[] parameters)
{
using (SqlConnection connection = new SqlConnection(_connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddRange(parameters);
using (SqlDataReader reader = command.ExecuteReader())
{
DataTable result = new DataTable();
result.Load(reader);
return result;
}
}
}
}
}
然后,使用SQLHelper類執行參數化查詢:
public class UserRepository
{
public DataTable GetUsersByUsername(string username)
{
string query = "SELECT * FROM Users WHERE Username = @Username";
SqlParameter parameter = new SqlParameter("@Username", SqlDbType.NVarChar) { Value = username };
return SQLHelper.ExecuteQuery(query, new SqlParameter[] { parameter });
}
}
在這個示例中,我們使用了參數化查詢,將用戶名作為參數傳遞給查詢。這樣,即使用戶輸入包含惡意SQL代碼,它也只會被當作字符串處理,而不會影響查詢的結構。從而有效地防止了SQL注入攻擊。