sha*_*oth 39 .net c# sql security sql-injection
我知道SQL注入相当危险.现在在我的C#代码中,我用SqlCommand类构成参数化查询:
SqlCommand command = ...;
command.CommandText = "SELECT * FROM Jobs WHERE JobId = @JobId;";
command.Parameters.Add("@JobId", SqlDbType.UniqueIdentifier ).Value = actualGuid;
command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
这会自动使我的代码免受SQL注入吗?我需要做些额外的事吗?
Chr*_*n.K 27
对于参数化查询,我会说你的特定的,可能是规范的例子,是的,这就足够了.
但是,人们有时会编写这样的代码
cmd.CommandText = string.Format("SELECT * FROM {0} WHERE col = @col;", tableName);
cmd.Parameters.Add("@col", ...);
Run Code Online (Sandbox Code Playgroud)
因为根本没有办法将tablename本身作为参数传递,并且有时存在的愿望 - 被误导或没有.它似乎经常被忽略,tableName(除非可能只读取一组不从任何输入派生的静态/常量值)确实允许SQL注入.
| 归档时间: |
|
| 查看次数: |
13207 次 |
| 最近记录: |