gsh*_*arp 7 .net c# t-sql entity-framework
我注意到在EF中使用Contains时
.Where(i => myListOfStrings.Contains(i.Value))
Run Code Online (Sandbox Code Playgroud)
生成的SQL看起来像这样
IN ('Value1', 'Value2')
Run Code Online (Sandbox Code Playgroud)
由于值没有参数化,是不是可以注入一些SQL?
它不会只是盲目地从您的Contains. 至少它会转义单引号(通过将它们加倍)。假设您想注入类似 "') OR 1=1--" 的内容,就像评论中建议的那样,假设它将被转换为:
where ... IN ('') OR 1 = 1 -- the rest
Run Code Online (Sandbox Code Playgroud)
但是因为单引号被转义,这将是:
where ... IN (''') OR 1 = 1 --' -- the rest
Run Code Online (Sandbox Code Playgroud)
所以我们在这里是安全的,因为您的整个语句都被视为字符串。
| 归档时间: |
|
| 查看次数: |
466 次 |
| 最近记录: |