【问题标题】:Does NPOCO Append(arg1, arg2) prevents SQL injection?NPOCO Append(arg1, arg2) 是否防止 SQL 注入?
【发布时间】:2019-09-01 08:39:18
【问题描述】:

查看源代码我不清楚该方法是否 NPOCO 库中的 public Sql Append(string sql, params object[] args) 可防止 SQL 注入。

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

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

这段代码容易被SQL注入吗?

【问题讨论】:

  • 你有没有弄明白这件事?我问,因为我面临着类似的困境。
  • 是的。只需检查查询,您就可以看到没有附加字符串。

标签: c# npoco


【解决方案1】:

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

SELECT BLAH WHERE Something = @0 AND SomethingElse = @1`

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-20
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多