安全字符串比较函数
2022-08-30 17:45:49
我刚刚在Zend框架的HTTP Auth库中遇到了这个代码。它似乎使用特殊的字符串比较函数来使其更安全。但是,我不太理解这些评论。谁能解释为什么这个功能比做更安全?$a == $b
/**
* Securely compare two strings for equality while avoided C level memcmp()
* optimisations capable of leaking timing information useful to an attacker
* attempting to iteratively guess the unknown string (e.g. password) being
* compared against.
*
* @param string $a
* @param string $b
* @return bool
*/
protected function _secureStringCompare($a, $b)
{
if (strlen($a) !== strlen($b)) {
return false;
}
$result = 0;
for ($i = 0; $i < strlen($a); $i++) {
$result |= ord($a[$i]) ^ ord($b[$i]);
}
return $result == 0;
}