Заставить PHP запускать все условия

Я создаю приложение, чувствительное к временным атакам. Я думал о том, чтобы вместо создания "если дерево", где вы вложили оператор 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 сокращает, если оценка оператора короткая, если есть какое-то условие, которое не выполнит весь оператор. Как я могу обойти это?

1 ответ

Изменить: этот подход не работает, потому что сравнение строк также обрывается, когда один символ выключен.

Я понял. Вместо того, чтобы назначать логические значения переменным условия, я назначаю символ "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
}
Другие вопросы по тегам