Asp.net Preparedquery易受Sql注入攻击

Asp.net Preparedquery易受Sql注入攻击,asp.net,sql-server,c#-4.0,webforms,owasp,Asp.net,Sql Server,C# 4.0,Webforms,Owasp,我正在运行OWASP Zap作为我们代码的安全审查 使用preparedquery时检测到SQL注入,我很难确定原因是什么?我们准则的基础是: DLPreparedQuery preparedQuery = this._env.Conn.Prepare("select a from Table1", new DLDataTypes[] { DLDataTypes.BigInt, DLDataTypes.Char, DLDataTypes.BigInt, D

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

使用preparedquery时检测到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);
我们还使用AntiXS转义所有用户输入的文本

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

我应该在SQLServer上查看哪些设置


提前感谢。

尚未使用preparedquery,但我建议您运行sql profiler,直到识别出恶意语句。在确定语句的外观之后,您很可能知道该怎么做

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


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

使用antixss进行的转义是完全错误的!HtmlEncode(必须)仅在网页上呈现文本时使用-与sql注入和要保存在sql上的数据无关。