我想知道,在从执行Stored程序处执行 sql 时,我是否需要使用参数化查询,以防止 SQL 喷射攻击?
根据这个""http://msdn.microsoft.com/en-us/library/dd487208.aspx" rel=“nofollow”>MSDN链接 ,我应该使用参数。
根据此", http://msdn.microsoft.com/en-us/library/ee358758.aspx" rel=“nofollow” > 其它 MSDN 链接 , 使用 {0} 的 sql 字符串相当于使用参数 。
所以在我的 SQL 语句中只包含一个 {0} 、 {1} 等是否真的正常 :
var rv = _context.ExecuteStoreQuery<int>("select ID from table where typeID = {0}", typeID);
或者我需要:
var param = new SqlParameter("@typeID", SqlDbType.Int);
param.Value = typeID;
var rv = _context.ExecuteStoreQuery<int>("select ID from table where typeID = @typeID", param);