PHP防时序攻击的字符串比较函数hash_equals

时序攻击

在 php 中比较字符串相等时如果使用双等 == 可能会有时序攻击的危险.

比如比较

“abscdd” == $request->code

那么两个字符串是从第一位开始逐一进行比较的,发现不同就立即返回 false,那么通过计算返回的速度就知道了大概是哪一位开始不同的,这样就可以按位破解。

而使用 hash_equals 比较两个字符串,无论字符串是否相等,函数的时间消耗是恒定的,这样可以有效的防止时序攻击。

hash_equals(‘abscdd’,$request->code)