我有一个有点可怜这里的情况。我坚持使用商业服务器,这并没有做很多的消毒/参数化。参数化查询/没有/使用查询
我试图建立我的查询,以防止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