2011-12-19 353 views
0

是否有可能隐藏URL中的查询字符串?隐藏URL中的查询字符串

我计划去会话变量..但它只能在有限的时间。

我的网址和查询字符串是

的Default.aspx?A = B & C = d

我需要为Default.aspx的

我尝试进行加密和解密。但是可以在地址栏中更改这些值。

+0

你是什么意思,但“它只在有限的时间内有效”。 – Strillo 2011-12-19 10:22:17

+0

@Strillo他意味着会话过了一段时间..以及它的变量。 – Shai 2011-12-19 10:24:08

+0

如果这些值需要长时间存储,您可以增加会话持续时间或其他缓存解决方案。 – Strillo 2011-12-19 10:28:48

回答

1

如果会话变量是不适合你,尝试在cookies中存储的值。

+0

谢谢Huske .. Cookies是安全的吗? – 2011-12-19 10:24:26

+0

安全吗?它们将位于您的用户计算机上,并将转移给您。如果你想安全地发送它们,你需要使用HTTPS。 – 2011-12-19 10:34:11

+0

好吧..我开始使用查询字符串,因为它不会过期,并且可以随时运行该页面。查询字符串的唯一问题是可以在地址栏中更改。我需要完全像查询字符串功能和作为会话隐藏工作。饼干会成为兄弟? – 2011-12-19 10:47:40

1

在您的表单上使用POST操作而不是GET。值仍然能够虽然被改变,他们只是将无法看到你的URI

+0

感谢您的回复CraPo!请给出任何例子... – 2011-12-19 10:27:02

+0

在你的'FORM'标签集中'ACTION = POST'而不是'ACTION = GET' – CraPo 2011-12-19 10:51:07

+0

如何在下一页获取这些值? – 2011-12-19 10:54:29

-1

使用URL重写或URL路由做到这一点....

+0

感谢您的回复Gaurav Agrawal!我dono关于URL重写和路由...请给任何例子... – 2011-12-19 10:25:31

+0

这个答案不是特别有用。如果有人不知道URL重写或路由是什么,那么这不会告诉他们很多。如果他们知道这些事情是什么,他们可能不会问这个问题。 – 2011-12-19 16:10:21

0

我不使用.NET,但你可以使用POST代替GET。

1

Ganesh神,

你要明白一个网址是什么,

的URL是能够访问互联网上的资源地址。

所以我们不应该在URL中隐藏任何东西,因为这就像是说某人“去伦敦约翰街127号”,你不想让他去试试126(因为他不允许)!

为什么要隐藏一个url参数?大多数时间,因为用户必须具有正确的权限访问资源,所以在这里你的解决办法是:

  • 在会话中存储的用户ID,当用户试图访问的ressource检查他拥有强制特权

  • 或者让您的产品ID不是整数(或者在数据库中添加一列“ProductIDUrl”),就像guid一样,因此没有人可以猜出产品ID。

1

如果安全是您的问题,那么security by obscurity不是最好的方法。通过POST发送数据不会解决问题,除非您使用某种加密。

你可以很容易地加密的网址btw。不推荐使用Session,因为它会给服务器带来额外的负担。

Cookie可能会影响性能。

如果您只关心安全性,那么加密查询字符串是一个选项。