【发布时间】:2014-01-06 19:46:16
【问题描述】:
如何获取查询字符串中的原始(未解码)值?
我找到了 Request.Url.Query,它确实成功地为我提供了原始查询字符串本身。但是,它给了我一个“字符串”类型和整个 QS 内容:如何获取键/值对?
我确实找到了HttpUtility.ParseQueryString,但这迫使我进行解码。我需要原始名称/值对。
我必须为此实现自己的查询字符串解析吗?有没有人做过一个我可以使用的忽略编码的?我找到了Mono implementation,但这也强制编码。
谢谢!
编辑:我正在寻找这个的原因是因为有人(不是我!)编写了一些代码来加密一个值并将其放在查询字符串中。但是他们忘记了先对其进行编码。 Request.Querystring() 正在执行的解码导致无法解密其中大约 50% 的内容,因为加密会留下诸如“+”和“。”之类的内容。
【问题讨论】:
-
为什么编码的键/值对比未编码的更有价值?
-
对
Request.QueryString[key]返回的值重新编码很简单。 -
我之所以寻找这个是因为有人(不是我!)编写了一些代码来加密一个值并将其放在查询字符串中。但是他们忘记了先对其进行编码。 Request.Querystring() 正在执行的解码导致无法解密其中大约 50% 的内容,因为加密会留下“+”和“。”等内容。
-
@dferraro:而且您无法更改将该值放入查询字符串的代码,对吧?
-
如果您在目标客户端操作系统上测试所有最有可能的客户端/浏览器,我认为您实际上或多或少是安全的。问题是你不能全部测试它们。我确信某些浏览器会在您粘贴时更改 url 的 视觉表示,这对于非拉丁字符集最为突出。但是,我没有观察服务器端来查看这些更改是如何反映的。只要您对所有可能的字符/浏览器/客户端都进行了测试,就可以了。
标签: c# asp.net query-string