C# PetaPoco的查询(字符串查询、参数)方法是否可以防止SQL注入?

C# PetaPoco的查询(字符串查询、参数)方法是否可以防止SQL注入?,c#,.net,sql-injection,petapoco,C#,.net,Sql Injection,Petapoco,中提到了PetaPoco的SQL Builder SQL对象可以防止SQL注入。但Querystring查询、参数方法是否可以防止SQL注入 SQL Builder是安全的: var id = 123; var a = db.Query<article>(PetaPoco.Sql.Builder .Append("SELECT * FROM articles") .Append("WHERE article_id=@0", id) ); 但是字符串查询在这样传递参数时安全吗

中提到了PetaPoco的SQL Builder SQL对象可以防止SQL注入。但Querystring查询、参数方法是否可以防止SQL注入

SQL Builder是安全的:

var id = 123;
var a = db.Query<article>(PetaPoco.Sql.Builder
  .Append("SELECT * FROM articles")
  .Append("WHERE article_id=@0", id)
);
但是字符串查询在这样传递参数时安全吗

var id = 123;
var a = db.Query<article>("SELECT * FROM articles WHERE article_id=@0", id);

是的,它确实可以防止SQL注入

如果不确定,可以通过对正在执行的SQL运行SQL跟踪来验证这一点。或者针对nvarchar列提供一些输入,其中包含一个单引号和一个双引号,并查看是否会发生运行时异常,如果SQL注入出现问题,则会发生这种异常

另见:

这是正确的行为。SQL和参数被传递给 用于防止基于注入的攻击的DB命令。连接的数据库 将以安全的方式将SQL和参数放在一起


是的,如果您尝试在github上查看PetaPoco的源代码。它毕竟是在使用SqlParameter。