强制 PHP 运行所有 if 条件



我正在构建一个对定时攻击敏感的应用程序。我想的不是在嵌套if语句的地方制作一个"if树",而只是运行所有的if语句,然后在最后检查所有条件,如下所示:


if (password_verify($pass, $hash)){
$cond1 = true
}else{
$cond1 = false
}
// some more ifs that run in serial
if ($cond1 && $cond2 && cond3 ... etc){
// some code
}

但我相信最终的 if 语句仍然容易受到攻击,因为如果存在某些会使整个语句失败的条件,PHP 会缩短 if 语句求值。我该如何解决此问题?

编辑:这种方法不起作用,因为一旦关闭一个字符,字符串比较也会缩短。

我想通了。我没有将布尔值分配给条件变量,而是分配了一个字符"0"或"1"。然后,我在最后连接所有条件并检查该字符串是否为"11111111"。

if (password_verify($pass, $hash)){
$cond1 = "1";
}else{
$cond1 = "0";
}
// some more ifs that run in serial
$allcond = $cond1.$cond2.$cond3; //etc
if ($allcond = "11111"){
// some code
}

最新更新