【问题标题】:Preparedquery vulnerable to Sql injectionPreparedquery 易受 Sql 注入攻击
【发布时间】:2013-05-21 18:49:09
【问题描述】:

我正在运行 OWASP Zap 作为对我们代码的安全审查。

当我们使用准备好的查询时检测到 SQL 注入,我正在努力确定原因?我们代码的基础是:

DLPreparedQuery preparedQuery = this._env.Conn.Prepare("select a from Table1",
                    new DLDataTypes[] { DLDataTypes.BigInt, DLDataTypes.Char, DLDataTypes.BigInt, DLDataTypes.BigInt, DLDataTypes.Char, DLDataTypes.BigInt },
                    new string[] { "@P1", "@P2", "@P3", "@P4", "@P5", "@P6" },
                    DLQueryOptions.Default, -1);

object[,] objResult = (object[,])preparedQuery.Query(1, 'ABC', 'DEF', 1,'AAA',21);

我们还使用 antixss 转义所有用户输入文本

Microsoft.Security.Application.Encoder.HtmlEncode(inputData)

我应该查看 SQLServer 的设置吗?

提前致谢。

【问题讨论】:

  • 你用antixss做的逃避是完全错误的! HtmlEncode 仅在您在网页上呈现文本时(必须)使用 - 与 sql 注入和您要保存在 sql 上的数据无关。

标签: asp.net sql-server c#-4.0 webforms owasp


【解决方案1】:

没有使用preparedquery,但我建议你运行sql profiler,直到你识别出恶意语句。在确定语句的样子后,您很可能会知道该怎么做。

HtmlEncode 在这里不起作用。我建议你尝试用两个单引号替换单引号'。这不是一个防弹解决方案,但它可能会给你带来好的结果。

如果您的数据库处于完全恢复模式,您可以尝试使用一些第三方事务日志阅读器来扫描已执行的语句并尝试确定可能是什么问题。

【讨论】:

    猜你喜欢
    • 2015-10-03
    • 2019-08-10
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    相关资源
    最近更新 更多