我已經看到了一些示例如何使用參數來避免字符轉義。使用參數對SQL注入是否安全100%?C#ASP.NET SQL參數化
此外,你可以請一些基本的查詢(這是reguraly使用),以及你如何實現參數?
我之前搜索過的一些網站提供了太複雜的例子。
我已經看到了一些示例如何使用參數來避免字符轉義。使用參數對SQL注入是否安全100%?C#ASP.NET SQL參數化
此外,你可以請一些基本的查詢(這是reguraly使用),以及你如何實現參數?
我之前搜索過的一些網站提供了太複雜的例子。
參數化的SQL查詢的一個基本的例子如下:
SqlCommand command = new SqlCommand(@"select city from users where username = @username", conn);
SqlParameter param = new SqlParameter();
param.ParameterName = "@username";
param.Value = "abc123"
command.Parameters.Add(param);
conn
是已經建立的SqlConnection的。
@username
是執行命令時將被替換的參數名稱。
abc123
是我爲示例設置的用戶名。
這顯然是一個編造的場景,但你明白了。
作爲一個較短的版本,你可以使用
SqlCommand command = new SqlCommand(@"select city from users where username = @username", conn);
command.Parameters.AddWithValue("@username", "value");
確定 - 但使用'.AddWithValue()'方法基本上告訴ADO.NET猜測所使用的數據類型 - 大部分時間它的表現都很好。但有時候,它已經關閉 - 有時候關閉很多。因此,我不建議這樣做 - 總是明確定義**數據類型總是更好,並且不會讓ADO.NET運行時造成猜測...... – 2012-04-22 20:20:20
我相信'AddWithValue'有一個重載讓你通過一個類型。 – 2012-04-22 21:05:30
我毫不猶豫地指出,什麼是100%安全的。另外,你經常使用的查詢是什麼意思?這完全取決於你的數據模型。 – 2012-04-22 17:04:04