chr*_*ris 10 security linq-to-entities sql-injection
我看过几篇关于L2E是否容易受到SQL注入影响的文章.
来自MSDN:
尽管在LINQ to Entities中可以进行查询组合,但它是通过对象模型API执行的.与实体SQL查询不同,LINQ to Entities查询不是使用字符串操作或连接组成的,并且它们不易受传统SQL注入攻击的影响.
这是否意味着存在可能有效的"非传统"攻击? 本文有一个非参数化查询的例子 - 可以安全地假设,如果通过变量传入用户提供的数据,它将被参数化吗?
如果我做:
from foo in ctx.Bar where foo.Field = userSuppliedString select foo;
Run Code Online (Sandbox Code Playgroud)
我安全吗?
在您的示例中,您使用的是变量(userSuppliedString
),因此它将被参数化.
如果您的代码中有文字值:
from foo in ctx.Bar where foo.Field == "Hi" select foo;
Run Code Online (Sandbox Code Playgroud)
...然后EF 1不会对它进行参数化,但是SQL注入也没有危险,因为它是一个文字.