gpt4 book ai didi

c# - PetaPoco 的 Query(string query, parameters) 方法是否可以防止 SQL 注入(inject)?

转载 作者:行者123 更新时间:2023-11-30 15:57:31 26 4
gpt4 key购买 nike

PetaPoco's home page有人提到 PetaPoco 的 SQL Builder(Sql 对象)可以防止 SQL 注入(inject)。但是 Query(string query, parameters) 方法是否可以防止 SQL 注入(inject)?

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 注入(inject)。

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

另见 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

关于c# - PetaPoco 的 Query(string query, parameters) 方法是否可以防止 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44907263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com