Entity framework 实体框架代码优先-SQL注入预防

Entity framework 实体框架代码优先-SQL注入预防,entity-framework,ef-code-first,Entity Framework,Ef Code First,我在MySQL中使用EF的代码优先方法 我想知道这种方法中的EF是否内置了针对SQL注入的保护,或者我是否必须在MySqlCommand中创建SQL字符串查询并添加一些参数以防止这种攻击 我想我没必要,但我想确定一下 编辑(代码段示例): 或 第一种方法为我编写代码要快得多。EF的LINQ to实体(如第一个示例中所使用的)负责防止SQL注入攻击。您的第一个代码是SQL注入证明 传递给EntityFramework的任何内容都将作为内部IDB命令中的命令传递 但是,如果您使用EntityFram

我在MySQL中使用EF的代码优先方法

我想知道这种方法中的EF是否内置了针对SQL注入的保护,或者我是否必须在MySqlCommand中创建SQL字符串查询并添加一些参数以防止这种攻击

我想我没必要,但我想确定一下

编辑(代码段示例):


第一种方法为我编写代码要快得多。

EF的LINQ to实体(如第一个示例中所使用的)负责防止SQL注入攻击。

您的第一个代码是SQL注入证明

传递给EntityFramework的任何内容都将作为内部IDB命令中的命令传递

但是,如果您使用EntityFramework执行直接查询,请注意

虽然查询组合在LINQtoEntities中是可能的,但它是可行的 通过对象模型API执行。与实体SQL查询不同, LINQ到实体查询不是通过使用字符串操作组成的 或者连接,并且它们不受传统SQL的影响 注射攻击。"


如果您给出一个您认为可能容易受到SQL注入攻击的代码示例,可能会有所帮助。如果您的意思与我认为的相同,那么答案是否定的,您不必做任何特殊的事情,但我可以想到您可能指的其他事情。
MyContext cont = new MyContext();
cont.Comment.AddObject(new Comment { Content = "my string" });
cont.SaveChanges();
string query = "INSERT INTO Comment(Content)VALUES(@myVal)";

MySqlCommand comm = new MySqlCommand(query);
comm.CommandType = CommandType.Text;

comm.Parameters.AddWithValue("@myVal", "my string");
...and later execute that query