我將如何滿足靜態代碼分析工具(在這種情況下checkmarx),有以下方法沒有任何問題:Checkmarx:二階在C#中的SQL注入攻擊
public OdbcDataReader ExecuteQuery(string sql)
{
var cmd = new OdbcCommand(sql, connection);
return cmd.ExecuteReader();
}
Checkmarx告訴我下面的:
方法ExecuteQuery從ExecuteReader元素中獲取數據庫數據。 然後,此元素的值將在代碼 中流動,而不會進行正確的清理或驗證,並且最終將在方法ExecuteQuery的數據庫查詢中使用 。 這可能會啓用二階SQL注入攻擊。
有什麼樣的輸入環境衛生'sql'在達到ExecuteQuery方法之前完成了嗎?我推斷分析工具看到'sql'進入,然後在ExecuteReader觸發之前被傳遞給OdbcCommand對象的構造函數... –
SQL在Web服務器端被硬編碼。它使用String.Format而不是參數 –
不幸的是,就SQL注入(直串而不是參數化查詢)而言,這或多或少是不要做的。除非我誤解了這種情況,否則這種方法至少不能進行一些衛生檢查嗎? –