使用包含EF时可能的SQL注入?

时间:2016-06-08 11:18:20

标签: c# .net entity-framework tsql

我注意到在EF中使用Contains时

.Where(i => myListOfStrings.Contains(i.Value))

生成的SQL看起来像这样

IN ('Value1', 'Value2')

由于这些值没有参数化,是不是可以注入一些SQL?

1 个答案:

答案 0 :(得分:4)

它不会盲目地从你的Contains构建IN语句。至少它会逃脱单引号(通过加倍)。假设您要注入类似"')OR 1 = 1 - "如评论中建议的那样,假设它将被转换为:

where ... IN ('') OR 1 = 1 -- the rest

但是因为单引号被转义为:

where ... IN (''') OR 1 = 1 --' -- the rest

所以我们在这里很安全,因为你的整个陈述被视为字符串。