LINQ的ExecuteCommand是否提供SQL注入攻击保护?

Sco*_*owe 16 linq sql-injection linq-to-sql

我有一种情况需要使用LINQ的ExecuteCommand方法来运行插入.

类似的东西(为了这个问题的目的简化):

object[] oParams = { Guid.NewGuid(), rec.WebMethodID };

TransLogDataContext.ExecuteCommand (
"INSERT INTO dbo.Transaction_Log (ID, WebMethodID) VALUES ({0}, {1})",
oParams);
Run Code Online (Sandbox Code Playgroud)

问题是,这是否是SQL注入证明,参数化查询的方式相同?

Joe*_*orn 14

做了一些研究,我发现了这个:

在我的简单测试中,看起来ExecuteQuery和ExecuteCommand方法中传递的参数会根据提供的值自动进行SQL编码.因此,如果传入带有'字符的字符串,它将自动将SQL转义为''.我相信类似的策略用于其他数据类型,如DateTimes,Decimals等.

http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx
(您可以向下滚动查找)

这对我来说似乎有点奇怪 - 大多数其他.Net工具比"SQL逃逸"更好; 他们使用真实的查询参数.

  • 评论者,ScottGu,\不仅仅是一个网上随机的人!http://en.wikipedia.org/wiki/Scott_Guthrie (8认同)