实体框架,LinqToSQL和sql注入

时间:2010-08-13 04:11:54

标签: linq-to-sql entity-framework sql-injection

完全使用LinqToSQL或Entity Framewok的项目是否有可能遭受SQL注入。

我认为这可能不是因为ORM生成的SQL应该是sql-injection free。但我不确定。

2 个答案:

答案 0 :(得分:10)

当您按预期使用这些框架时,即直接使用实体/表时,则为no。所有字符串比较(即where name = 'smith')都已参数化。

唯一的弱点是:

  • 任何字符串都可以直接针对上下文执行。 dbContext.ExecuteQuery();有任何破坏性的字符串。

  • 使用给定的任何参数执行动态SQL的存储过程

答案 1 :(得分:3)

“这取决于”。

针对L2S或EF实体的普通LINQ查询是注入安全的,但您始终可以调用不是注入安全的存储过程或函数。

这显然是一个边缘情况,但是会发生人们编写可以注入的SP /函数(使用proc中的参数值组成SQL-in-strings)。