gpt4 book ai didi

c# - 使用包含 EF 时可能的 SQL 注入(inject)?

转载 作者:太空狗 更新时间:2023-10-29 20:30:05 28 4
gpt4 key购买 nike

我注意到在 EF 中使用 Contains 时

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

生成的SQL是这样的

IN ('Value1', 'Value2')

既然值没有参数化,是不是可以注入(inject)一些SQL?

最佳答案

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

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

但是因为单引号被转义了,所以会是:

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

所以我们在这里很安全,因为您的整个语句都被视为字符串。

关于c# - 使用包含 EF 时可能的 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37701002/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com