【问题标题】:Preventing user from opening multiple tabs for the application防止用户为应用程序打开多个选项卡
【发布时间】:2016-10-04 06:10:40
【问题描述】:

在我的应用程序中,它不应该允许用户在同一浏览器的多个选项卡中打开应用程序。出于某种安全目的,我需要实现这一点。我该如何实现呢?

【问题讨论】:

  • 阻止一个应用程序的多个实例如何使您的站点更安全?另外,正如之前有人问过的那样(herehere):这不是一个好主意,也不是一个用户友好的主意。

标签: javascript


【解决方案1】:

每次用户打开您的应用程序时,都会在服务器端生成一个会话 ID。此会话 ID 应特定于浏览器、IP、MAC 以及您在初始请求中收到的任何数据。对于每个后续请求,验证会话 ID。

应用程序中的任何链接都应发送 POST 请求,最好是提交表单,而不是 GET 请求,因此它不会在另一个选项卡中打开。

如果用户故意在另一个选项卡中打开您的应用程序,因为您知道您已经为请求的数据生成了一个会话 ID,因此使之前生成的会话 ID 无效,注销该用户并销毁该会话。

【讨论】:

    【解决方案2】:

    更简单的方法是订阅 localStorage 通知,然后更新一个节点。由于事件不会发送到更新选项卡,它只会影响以前打开的选项卡。

    jquery 中的示例:

    $(window).on("storage", function(ev) {
        if (ev.originalEvent.key == "tabsync") {
            window.close(); // will probably not work if the user opened the tab
            window.location = "/onetabonlyplease";
        }
    });
    
    localStorage.setItem("tabsync", Date.now());
    

    【讨论】:

      猜你喜欢
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 2023-01-01
      • 1970-01-01
      • 2023-02-11
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      相关资源
      最近更新 更多