php 浏览器 cookie,PHP,cookie和快速浏览器刷新

博客讨论了在登录系统中遇到的问题,即令牌验证在快速刷新浏览器时可能导致不匹配,从而导致身份验证失败。作者指出,当前的解决方案可能会给用户带来不便,因为更新的令牌可能在某些请求中未同步到cookie。建议使用PHP会话来提高安全性,避免依赖多个cookie,并减少用户因令牌不匹配而被意外注销的情况。
摘要由CSDN通过智能技术生成

对于我的登录系统,我有一个令牌值,每次验证发生时都会更改.每次访问任何页面时都会进行身份验证(通过查找令牌cookie和会话广告等),以及每次$​​ .ajax调用(我的想法是我希望确保用户始终进行身份验证,以及是否进行身份验证失败的令牌或系列或其他什么,系统会自动完全注销).在身份验证过程中,当确定当前会话有效时,会生成一个新令牌,并将该令牌设置为cookie并在MySQL表中更新,如下所示:

$newtoken = hash("sha256", mt_rand());

my_mysqli_query($link,

'UPDATE _rememberme SET token = "'.$newtoken.'", lastupdated = "'.now().'"

WHERE series = "'.$series.'" AND email = "'.$email.'"');

setmycookie("token", $newtoken, 7);

当我快速刷新浏览器时,它最终导致MySQL令牌和cookie令牌不匹配.我认为问题在于,在快速刷新期间,MySQL表会更新,但随后会发生刷新,脚本会在更新cookie之前中止.这会导致将来的身份验证失败,因为cookie令牌与MySQL令牌不匹配.

我真的很感激如何让用户快速刷新浏览器的一些想法.

我已经研究过这个问题,并且在找到解决方案方面收效甚微.

解决方法:

您的解决方案不会增加安全性,并为您的用户增添了一个令人头疼的问题.

如果您使用PHP会话,则不必依赖多个cookie,也不必在每次访问时对所有内容进行哈希处理.准备会话将提高安全性,因为您的用户将无法更改其会话变量. Cookie是用户可修改的,因此您不能盲目信任它们.但是,用户可以更改PHPSESSION cookie,但是将会话更改为另一个会话的可能性非常小,几乎不可能.

使用当前代码,如果用户在新选项卡上打开链接,并且在请求返回之前打开另一个链接,他将被注销. cookie将在第一个请求时更改,但在浏览器获取新值之前,用户会使用旧cookie提交另一个请求.新值在数据库上,处理具有旧值的新请求,并且会话无效.另一个不满意的用户感到困惑,因为他被随机注销.

标签:php,mysql,cookies

来源: https://codeday.me/bug/20190706/1397297.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值