【问题标题】:Restrict User Access in same browser在同一浏览器中限制用户访问
【发布时间】:2012-06-13 13:23:23
【问题描述】:

我正在制作一个基于 php 的应用程序。当两个用户从同一浏览器中的不同选项卡登录时,他们可以访问彼此的页面。如何预防?

【问题讨论】:

  • 为什么?除了让用户为每个请求输入用户名/密码之外,我不知道这是否可行,更不实用。
  • "Restrict user access" in title - "can access" 有问题???
  • 真正需要做的是确保您不允许浏览器以某种方式登录两个不同的用户。这通常是网络应用程序在这方面的工作方式。 IE,如果用户尝试访问登录屏幕或表单,请先让他们注销,或者如果请求登录页面或表单,则自动注销其他用户。
  • 为什么两个用户会在同一个浏览器中使用不同的标签?站点的 Cookie 存在于整个浏览器会话中,而不是针对每个选项卡。另外,如果我决定点击另一个标签怎么办?
  • @Rocket - 有可能(现在我想到了)让两个不同的用户在不同的“应用程序/路径上下文”中登录到同一个浏览器,但在“共享站点上下文”中。换句话说,如果您的应用程序位于 http://example.com/rocketsapp 而我的应用程序位于 http://awesome.example.com/jaredsapp,理论上,如果会话与“登录”标志或检查和会话重叠,cookie/会话可以识别可以访问两者的用户cookie 设置为子域而不是路径扩展名。有可能……而且显然是一个缺陷。

标签: php login restrictions


【解决方案1】:

你的应用程序没有检查用户当前是否登录,所以你必须做什么 首先当用户输入凭据并登录时设置会话变量

$_SESSION['logged_in'] = "true";

那么您必须在页面开头对索引页面进行如下修改

<?
if($_SESSION['logged_in']=='true'){
header('location:USERS_SPECIFIC_PAGE_AFTER_LOGIN.EXT')
}
else{
header('location:login_page.ext');
}

?>

【讨论】:

    【解决方案2】:

    我看到有 4 个解决方案:

    1. 您可以尝试为该窗口(在本例中为选项卡)命名以使用 JavaScript 检测特殊窗口:

      if(window.name==4711) {...}
      
    2. 使用带有 GET 参数而不是 cookie 的会话。

    3. 使用随机子域和在该子域上运行的正常 cookie。

    4. 使用一个普通的 cookie,它被限制在一个“虚拟”目录中,而使用 mod_rewrite 时该目录并不真正存在。 Idea based on this comment.

    【讨论】:

    • 这将如何阻止某人只选择另一个选项卡?
    • 我理解问题是通过这种方式搜索解决方案以在具有多个帐户的一个浏览器中登录。这是不可能的基于 cookie 的会话。
    • @JaredFarrish:这个概念让整个问题变得毫无意义。我想知道为什么这是 OP 认为他需要解决的问题。
    • @Rocket - 是的,我知道。见我的其他 cmets。我认为担心是“虚假的”,因为担心某些“不真实”或身份验证过程构建不佳。
    • @JaredFarrish:另外,2 个用户如何在同一个浏览器中同时登录不同的标签页?这怎么可能?
    【解决方案3】:

    使用window.name 属性或在打开浏览器选项卡时为每个用户设置cookie。

    【讨论】:

      【解决方案4】:

      使用$_SESSION$_COOKIE 存储在用户登录和更新数据库时创建的生成密钥,以便当用户更改页面时,您可以根据生成的密钥访问他们的信息。此外,您可能需要创建一个简单的function 来检查密钥,而不是为您的页面使用其他功能,如果它像菜单栏或登录框,请将其包装在if statement 中,如

      if(checkUser($_COOKIE['MYSID'])){
         // User is logged in so show whatever
      } else {
         // Login box here
      }
      

      【讨论】:

      • Cookie 未绑定到选项卡或窗口,AFAIK。仍然不能阻止某人只是点击另一个标签
      • 你是对的,Cookie 不只是基于一个选项卡或窗口,但如果您使用 Cookie 作为登录源并在网站中添加了一个检查 Cookie 是否存在的部分,因此不允许其他人登录确实会阻止他的要求。
      • 缺陷在于,显然/也许?,OP 已经构建了一个系统,该系统以某种方式允许多个用户从同一个浏览器会话登录。修复它,不要为一个甚至不应该发生的问题实施一些复杂的“修复”。国际海事组织。
      猜你喜欢
      • 2015-03-15
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      相关资源
      最近更新 更多