2013-05-26 33 views
2

我正在運行OWASP Zap作爲我們的代碼的安全審查。Preparedquery容易受到Sql注入

當我們使用preparequery時正在檢測到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); 

我們也使用

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

是否有設置我應該逃避與antixss所有的用戶輸入文本看着SQLServer?

在此先感謝。

+0

您使用antixss進行逃生是完全錯誤的! HtmlEncode(必須)僅在您的網頁上呈現文本時使用 - 與sql注入和您要保存在sql上的數據無關。 – Aristos

回答

0

沒有與preparedquery一起工作,但我建議你運行sql profiler直到找出惡意語句。在確定陳述的外觀之後,你很可能會知道該怎麼做。

HtmlEncode在這裏不起作用。我建議你用兩個單引號替換單引號。這不是一個防彈解決方案,但它可能會給你很好的結果。

如果您的數據庫處於完全恢復模式,您可以嘗試使用某些第三方事務日誌讀取器來掃描已執行的語句,並嘗試確定可能存在的問題。

相關問題