我試圖通過參數保護下面的SQL查詢,但我沒有得到相同的功能。在ASP.NET中的以下查詢中刪除SQL注入?
原始SQL查詢:
SqlDataSource1.SelectCommand = "SELECT ASP_USER.TRANS_MASTER_EMEAPAY.* FROM ASP_USER.TRANS_MASTER_EMEAPAY where " + cond;
使用參數後,
String strQuery=SELECT ASP_USER.TRANS_MASTER_EMEAPAY.* FROM ASP_USER.TRANS_MASTER_EMEAPAY where @cond;
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.AddWithValue(@cond, cond);
//blabla...
我們通過函數調用得到的cond
值。
任何人都可以建議如何刪除此類查詢中的SQL注入?
是否有任何其他方式來保護這種類型的查詢?
COND定義爲: COND =條件() 和條件()被定義爲如下: 我們使用COND如下:cond=Condition();
和條件函數定義如下:公共字符串條件()
{
string condStr = " 1 = 1";
if (ddlCountry.SelectedValue != "" && ddlCountry.SelectedValue != "0")
{
condStr = condStr + " AND [Country] = '" + ddlCountry.SelectedValue + "'";
}
if (txtBatch.Text != "")
{
condStr = condStr + " AND [BATCH] = '" + txtBatch.Text + "'";
}
if (txtpid.Text != "")
{
condStr = condStr + " AND [PARTNER_PRO_ID] = '" + txtpid.Text + "'";
}
return condStr;
}
cond是什麼?你的完整的sql查詢看起來如何?如何讓'cond'工作的功能? – rene
_「我們正在通過函數調用獲取cond的值」_不要用不同的方法連接你的sql。這是你的sql注入問題的根源。 –
您必須使鍵/值對的函數返回列表各自爲字段名稱和值,然後將它們各自添加爲參數。 –