数据库
首页 > 数据库> > 的PetaPoco的查询(字符串查询,参数)方法可以防止SQL注入吗?

的PetaPoco的查询(字符串查询,参数)方法可以防止SQL注入吗?

作者:互联网

PetaPoco’s home page中,提到了PetaPoco的SQL Builder(Sql对象)可以防止SQL注入.但是Query(string query,parameters)方法可以防止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注入成为问题,则会发生此异常).

另见https://github.com/CollaboratingPlatypus/PetaPoco/issues/326#issuecomment-238538854

this is the correct behaviour. The SQL and parameters are passed to
the DB Command to prevent injection based attacks. The connected DB
will put the SQL and parameters together in a safe manner

标签:petapoco,sql-injection,c,net
来源: https://codeday.me/bug/20191111/2018206.html