【问题标题】:Log out on browser close [duplicate]在浏览器关闭时注销[重复]
【发布时间】:2013-11-26 21:51:47
【问题描述】:

我有一个带有登录名的 PHP 站点。一旦此人登录(使用基于标准文件的会话),此人可以单击注销页面,将其注销。

问题是 - 访问者通常不会这样做。他们只需关闭网络浏览器。

但是,下一个人可以过来,打开浏览器,然后就在第一个人的登录区域。

在共享用户环境(办公室、网吧等)中,这似乎是一个巨大的安全漏洞 :)

我需要知道如何通过关闭窗口来“注销”此人。我知道

 'session.cookie_lifetime' 

变量设置为 0。

必须有一些解决方案。任何帮助将不胜感激。

【问题讨论】:

    标签: php session session-cookies


    【解决方案1】:

    PHP 无法(孤立地)知道客户端何时关闭,因为那是客户端事件,而不是服务器事件。但是,您可以使用客户端上的 JS 将 AJAX 传回服务器,让它知道会话已关闭,使用 window.unload 事件 (link)。

    您可能还想查看this answer,它解释了会话清理中的一个潜在漏洞(不确定这是否仍然适用于更新的 PHP 版本)以及您可能还需要调整的 session.gc_maxlifetime。

    【讨论】:

    • 我发现它在 IE 8 和 Safari 上运行良好。它仅在 Chrome 和 Firefox 上不起作用。这些浏览器在浏览器关闭后以某种方式重用会话 cookie。我什至关闭了“启动时从我离开的地方继续”。所以这不是 PHP 的问题。
    猜你喜欢
    • 2012-12-04
    • 2017-01-05
    • 1970-01-01
    • 2012-10-05
    • 2020-10-23
    • 1970-01-01
    • 2014-02-13
    • 2012-07-29
    • 2015-08-22
    相关资源
    最近更新 更多