2011-05-28 45 views
5

我想通过查询字符串参数传递一些运算符,以便我可以将它们与值一起转换为SQL查询。这个想法是让查询字符串参数决定羯羊页面返回的搜索结果,其中价格是等于,大于或等于,大于,小于或小于或等于如下:如何通过查询字符串中的“> =”?

=, >=, >, < and <= 

我我不确定传递这些运营商的最佳做法是什么,有人能帮我解决吗?你会通过ascii代码或只是像e,gte,gt,lt,lte这样的文本,然后在构建查询的结果页面上转换它们吗?

谢谢你们!

+0

使用LINQ?这将为你做。 – Puppy 2011-05-28 15:46:56

回答

12

如用户Kon所述,使用HttpServerUtility.UrlEncode。我曾经写过a tiny little class to simplify working with query strings,所以我不必调用Server.UrlEncode。

作为一个侧面说明,继续SQL injection又名小博表的眼睛:

Little Bobby Tables Source

+7

+1:我爱Bobby! – MatBailie 2011-05-28 15:45:22

+0

@Uwe Keim:当你在SO上发布最常用的引用漫画时,让CW看到...? – gbn 2011-05-28 15:52:41

+0

@gbn--请原谅我的无知,“CW”代表什么? – 2011-05-28 15:57:28

5
+0

你可以显示一个代码片段,其中包含一些字符士兵Beardy想要在他的查询字符串? – DOK 2011-05-28 15:51:08

+0

那么,在做Server.UrlEncode(“> =”)并在重定向之前将其添加到我的查询字符串中,我最终会在URL中找到这个... search.aspx?operator =%26gt%3d&value = 5 我猜我使用Server.UrlDecode这个querystring参数时转换为我的SQL查询使用?然后我需要检查SQL注入,Uwe在他的回答中提到。谢谢@Kon! :) – 2011-05-28 16:03:51

+0

是的,然后你调用Server.UrlDecode解码参数。 我不明白SQL注入与这个问题有什么关系。这是一个完全不同的问题。如果你正在使用参数化存储过程或类似Entity Model Framework的东西,那么你不需要担心SQL注入。 – Kon 2011-05-29 11:55:39