我有一個有點可憐這裏的情況。我堅持使用商業服務器,這並沒有做很多的消毒/參數化。參數化查詢/沒有/使用查詢
我試圖建立我的查詢,以防止SQL注入,但像搜索/哪裏需要搜索對象的條款,要建立一些東西,而且也沒有參數的接口。
基本上,我不能參數,但是我希望能夠使用相同的發動機,如果能夠建立我的查詢文本。有沒有辦法做到這一點,除了編寫我自己的參數化引擎,這可能還不如參數化查詢?
更新:例
where子句已被建成一個SQL查詢語句的where子句主要有:
CatalogSearch search = /// Create Search object from commerce server
search.WhereClause = string.Format("[cy_list_price] > {0} AND [Hide] is not NULL AND [DateOfIntroduction] BETWEEN '{1}' AND '{2}'", 12.99m, DateTime.Now.AddDays(-2), DateTime.Now);
*上面的例子是你如何細化搜索,不過,我們做了一些測試,此字符串沒有被清除。
這就是我的問題所在,因爲.Format中的任何輸入都可以是用戶輸入,而我可以很容易地從文本框清理輸入,所以我會錯過邊緣情況,這只是事物的本質。我沒有選擇在這裏使用參數化查詢,因爲商業服務器中有如何處理組可擴展字段(模式)的一些瘋狂向後邏輯&自由文本搜索詞是預編譯的地方。 這意味着我不能直接去SQL表
什麼我/愛/看到的是沿着線的東西:
SqlCommand cmd = new SqlCommand("[cy_list_price] > @MinPrice AND [DateOfIntroduction] BETWEEN @StartDate AND @EndDate");
cmd.Parameters.AddWithValue("@MinPrice", 12.99m);
cmd.Parameters.AddWithValue("@StartDate", DateTime.Now.AddDays(-2));
cmd.Parameters.AddWithValue("@EndDate", DateTime.Now);
CatalogSearch search = /// constructor
search.WhereClause = cmd.ToSqlString();
(這是一個好主意,強調你的情況下,爲什麼你不能使用參數;感謝) – 2010-05-05 15:54:04
你能給我們帶來什麼/你是如何想用這個來完成的例子嗎? – 2010-05-05 15:59:04