Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在手动刷新时注销用户_Php_Security_Session - Fatal编程技术网

Php 如何在手动刷新时注销用户

Php 如何在手动刷新时注销用户,php,security,session,Php,Security,Session,我想知道如果用户手动刷新页面或单击后退按钮而不是单击提供的菜单,一些应用程序如何注销用户。我在印度的许多银行应用程序中都看到过这种情况。 经过思考,我想到的一个解决方案是,对于每个登录的用户,我可以存储当前会话id和下一个会话id,并在url中传递会话id。所以现在,如果用户刷新页面,并且会话id不是下一个会话id,那么我们可以简单地将它们注销。所以我可以做的是,如果在url中找到下一个会话id,那么我可以手动设置当前会话id 但从编程的角度来看,这可能会很忙,因为我必须在每个呈现页面的url中

我想知道如果用户手动刷新页面或单击后退按钮而不是单击提供的菜单,一些应用程序如何注销用户。我在印度的许多银行应用程序中都看到过这种情况。 经过思考,我想到的一个解决方案是,对于每个登录的用户,我可以存储当前会话id和下一个会话id,并在url中传递会话id。所以现在,如果用户刷新页面,并且会话id不是下一个会话id,那么我们可以简单地将它们注销。所以我可以做的是,如果在url中找到下一个会话id,那么我可以手动设置当前会话id

但从编程的角度来看,这可能会很忙,因为我必须在每个呈现页面的url中设置下一个会话id,我担心这是否会对安全造成威胁


有什么想法吗?

基本上是的,这就是你要做的。出于安全目的,您不应在URL中传输会话id,请将其保留在cookie中。但是,您可以在用户会话中保存随机令牌:

$_SESSION['token'] = uniqid(null, true); // quick prototype, not the best method
然后将此令牌嵌入页面上的每个URL中:

<a href="someMenuItem.php?token=<?php echo $_SESSION['token']; ?>">

不要在URL中放置会话ID。这可能会导致会话hijacking@DarkBee与其说它会导致会话劫持(将会话id存储在Cookie中的风险与此相同),不如说它会导致某人共享指向特定页面的链接,并通过该链接意外共享其会话id。是的,听起来不错。。我可以分配令牌之类的东西,然后匹配它,而不是存储id。就需求而言,我在问题中已经指出,我在许多应用中都看到了这一点,所以我认为我应该讨论一下。此外,我认为,我们应该将令牌存储在数据库中,而不是每次都将其存储在会话和匹配中,因为会话值总是可以读取的,因此需要额外的开销。您最后关于会话与数据库的评论毫无意义。