【问题标题】:session in asp.netasp.net 中的会话
【发布时间】:2011-07-22 02:47:28
【问题描述】:

我在 asp.net C# 页面中创建了一个会话,我正在像这样在会话中存储用户唯一 ID,

Session["userid"] = clsUser.UniqueId;

并检查每个页面上的此唯一 ID,如果会话为空,则重定向。但是如果我在 IE 的其他选项卡中复制用户当前的 URL,它不会重定向到登录页面。相反,它正在跨浏览器子选项卡维护会话。

如果用户尝试在另一个子选项卡中复制 url,我如何重定向到登录页面?

【问题讨论】:

  • 不要那样做。这很烦人。
  • 为什么要这样做?用户在多个选项卡中浏览网站是完全可以接受的,这是用户期望的行为。你想解决/避免什么?

标签: .net asp.net security c#-4.0 asp.net-ajax


【解决方案1】:

多个选项卡在同一个会话中 - 这是正常行为。也许您可以向页面添加第二个跟踪 HiddenField 或使用 ViewState 来确保回发来自它来自的同一页面?

我认为没有任何真正的方法可以防止这种情况发生。

【讨论】:

    【解决方案2】:

    你不能这样做,因为每个浏览器的标签共享相同的 cookie 和基于浏览器 cookie 的 asp.net 会话

    【讨论】:

      【解决方案3】:

      原始标签具有正确的Referer。复制的选项卡没有Referer。使用Request.UrlReferrer。请记住,这并不完全安全,因为老练的用户可能会操纵Referer。

      【讨论】:

      • 1) 如果您在新选项卡中打开链接,则它具有正确的引荐来源网址。而且我认为刷新也可以保留推荐人。 2) 有些人安装了阻止/替换其推荐人的软件。那些将无法使用该网站。
      【解决方案4】:

      您可以在页面加载时使用 Request.UrlReferrer,它会为您提供上一页的网址。

      if (Request.UrlReferrer != null)
      
      {
      
      //Load page  data as normal you are doing.  
      
      }
      
      else
      
      {
      
      // redirect to login page because user have copied and pasted the URL in new tab 
      
      //  and it do not have it previous page url in **Request.UrlReferrer** property.
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-25
        • 2011-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-13
        相关资源
        最近更新 更多