2

通过查看源代码,我不清楚 NPOCOpublic Sql Append(string sql, params object[] args)库中的方法是否阻止 SQL 注入。

为简单起见(我的查询比这更复杂),给定以下示例,filter作为客户端传递的参数:

var sql = new Sql();
sql.Append("SELECT * FROM Request WHERE [Company] LIKE @0", $"%{filter}%");

这段代码容易发生 SQL 注入吗?

4

1 回答 1

0

SqlBuilsder.AddTemplate 代码采用这种完全相同的 sql 字符串。然后我按照 NPoco 中的 Fetch 代码进行操作。最后你会得到一个参数化查询,例如 `DECLARE @0 Int = '4' DECLARE @1 NVarChar = '%bad sql%' OR 1=1 --%'

选择 BLAH WhereSomething = @0 AND SomethingElse = @1`

这将在 sql 注入中中断,因此返回 NULL。

测试您的恐惧的一个好方法是下载 NPOCO 并将其添加到您的解决方案中......参考它而不是 nuget 并逐步执行代码以查看最终结果。

于 2021-08-26T19:34:42.687 回答