可以在回发时更改URL吗?

时间:2009-05-04 17:08:33

标签: asp.net postback

我只需要在GET上解析URL Request.Querystrings,而不是回发,对吗?

if(!IsPostBack)
{
    Viewstate["magic_number"] = Parse(Request.Query);
}

不能指望用户修改请求后续回发中的URL,还是可以?

问题的动机 - 我不控制回发的javascript片段,所以对我来说这是黑盒子。

4 个答案:

答案 0 :(得分:2)

网址预计会发生变化。但请记住,每个回发都是页面类的新实例。因此,如果您没有将结果保存在第一个视图的某个位置,则需要准备好在下一个视图上再次执行此操作,依此类推。在这种情况下,您将其保存到ViewState,因此应该没问题。

但是,我怀疑你不会问这个问题,除非你观察到导致你怀疑的行为。所以让我们暂时考虑一下可能导致这种情况发生的原因:

  • 可能在您保存结果的客户端修改ViewState(虽然不是很简单,但绝对不推荐)。
  • 您可以在初始页面视图之前伪造回发。
  • 您可以使用javascript来更改发布的网址。

然而,对于所有这些事情,你肯定会知道你是否已经写了任何东西。

答案 1 :(得分:1)

您的假设是正确的,预计不会在后续回发中修改URL,您只需要在GET上解析查询字符串,这在第一次加载页面时就会发生。

答案 2 :(得分:1)

对于回发,网址通常不会更改。

当然可以使用像FireBug这样的工具在回发之前编辑表单标记中的URL,但是你可能不希望用户注入的值仍然是原始值。

答案 3 :(得分:0)

正如其他人所指出的那样,URL预计不会改变。当然,如果我们生活在一个完美的世界,你将永远不会收到垃圾邮件,也没有人会试图对你的网站做任何恶意的事情。

在现实世界中,你应该期望恶意的人会试图劫持你的网站,并且需要关注injection attacks

等事情。

您应该从不做出任何假设,即回发上收到的数据是有效的。