【问题标题】:Does PetaPoco's Query(string query, parameters) method protect from SQL injection?PetaPoco 的 Query(string query, parameters) 方法是否可以防止 SQL 注入?
【发布时间】:2017-12-08 00:04:09
【问题描述】:

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);

【问题讨论】:

标签: c# .net sql-injection petapoco


【解决方案1】:

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

如果您不确定,可以通过对正在执行的 SQL 运行 SQL 跟踪来验证这一点。或者提供一些带有单引号和双引号的输入(针对 nvarchar 列),并查看是否发生运行时异常(如果 SQL 注入存在问题,则会发生这种情况)。

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

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

【讨论】:

    猜你喜欢
    • 2017-09-02
    • 2020-02-20
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多