我必须遵循以下规则:存储过程必须以"参数化方式执行"。我相信它的SQL注入保护。 我想知道以下代码是否可以被视为"参数化执行"并受SQL注入保护。
return Database.SqlQuery<Program>(
String.Format("usp_GetPrograms {0},{1},{2},{3}",
pID, pDisplayStart, pDisplayLength, pSearchString)
).ToList();
反正我可以把它重写成那样的东西
context.Database.SqlQuery<myEntityType>(
"mySpName @param1, @param2, @param3",
new SqlParameter("param1", param1),
new SqlParameter("param2", param2),
new SqlParameter("param3", param3)
);
Iam问,因为该程序已经完成并经过测试并准备投入生产,我不想重写代码并冒险破坏某些东西。
您如何看待这两种方法?
其他问题: 根据
是否需要SqlParameter()&#34;从存储过程加载实体&#34;部分?
其他问题2: 我如何通过Nullable参数?
答案 0 :(得分:3)
您首次尝试显示与参数化查询无关。它只是串联查询,对sql注入无效。
如果你真的关心sql注入,你必须使用第二种方法。