完全使用LinqToSQL或Entity Framewok的项目是否有可能遭受SQL注入。
我认为这可能不是因为ORM生成的SQL应该是sql-injection free。但我不确定。
答案 0 :(得分:10)
当您按预期使用这些框架时,即直接使用实体/表时,则为no。所有字符串比较(即where name = 'smith'
)都已参数化。
唯一的弱点是:
任何字符串都可以直接针对上下文执行。 dbContext.ExecuteQuery();
有任何破坏性的字符串。
使用给定的任何参数执行动态SQL的存储过程
答案 1 :(得分:3)
“这取决于”。
针对L2S或EF实体的普通LINQ查询是注入安全的,但您始终可以调用不是注入安全的存储过程或函数。
这显然是一个边缘情况,但是会发生人们编写可以注入的SP /函数(使用proc中的参数值组成SQL-in-strings)。