验证码比较hash_equals 方法
验证码是否与缓存中一致时,使用了 hash_equals 方法:
hash_equals($verifyData['code'], $request->verification_code)
hash_equals 是可防止时序攻击的字符串比较,那么什么是时序攻击呢?比如这段代码我们使用
$verifyData['code'] == $request->verification_code
进行比较,那么两个字符串是从第一位开始逐一进行比较的,发现不同就立即返回 false,那么通过计算返回的速度就知道了大概是哪一位开始不同的,这样就实现了电影中经常出现的按位破解密码的场景。而使用 hash_equals
比较两个字符串,无论字符串是否相等,函数的时间消耗是恒定的,这样可以有效的防止时序攻击。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步