Las*_*tio 4 .net c# sql-injection petapoco
在PetaPoco 的主页中提到 PetaPoco 的 SQL Builder(Sql 对象)可以防止 SQL 注入。但是 Query(string query,parameters) 方法可以防止 SQL 注入吗?
SQL 生成器是安全的:
var id = 123;
var a = db.Query<article>(PetaPoco.Sql.Builder
.Append("SELECT * FROM articles")
.Append("WHERE article_id=@0", id)
);
Run Code Online (Sandbox Code Playgroud)
但是像这样传递参数的字符串查询安全吗?
var id = 123;
var a = db.Query<article>("SELECT * FROM articles WHERE article_id=@0", id);
Run Code Online (Sandbox Code Playgroud)
是的,它确实可以防止 SQL 注入。
如果您不确定,可以通过对正在执行的 SQL 运行 SQL 跟踪来验证这一点。或者提供一些带有单引号和双引号的输入(针对 nvarchar 列),并查看是否发生运行时异常(如果 SQL 注入出现问题,则会发生这种情况)。
另请参阅https://github.com/CollaboratingPlatypus/PetaPoco/issues/326#issuecomment-238538854:
这是正确的行为。SQL 和参数被传递到 DB 命令以防止基于注入的攻击。连接的数据库将以安全的方式将SQL和参数放在一起
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |