Заставить 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
}