У меня есть большой фокус на безопасности, и я пытаюсь защитить свою $ _SESSION. Я бы хотел, чтобы вы посоветовали.- способ защитить сеанс?
Когда пользователь создает учетную запись, я генерирую случайное значение от 11111 до 99999 в своем профиле в базе данных.
При входе пользователя я создаю сеанс, который содержит большинство пользовательских данных (без пароля или критической информации). В этой $ _SESSION я также добавляю зашифрованную версию этого случайного числа, которое я создал на шаге 1, и также создаю $ _COOKIE с тем же зашифрованным номером, который я буду использовать, чтобы проверить, действительно ли сеанс.
В моем приложении, когда я получаю запрос, я проверяю существование существующей $ _SESSION на самом деле, но чтобы предотвратить хакер (догадываться или взломать) идентификатор сеанса других людей. Я сравниваю зашитое значение ключа от $ _COOKIE с одним внутри $ _SESSION.
Главный квест: насколько безопасен этот метод? Я не вижу, как хакер может украсть идентификатор $ _SESSION и в то же время зашифрованный ключ.
шифрование ключа генерируется значением шифрования, расположенным на сервере, а не простым md5, которое с моей точки зрения легко воспроизвести. поскольку хакер не может знать значение шифрования, которое я использую для шифрования этого ключа.
затем в конце, когда пользователь отправляет запрос на сервер, он выглядит так (я упростил код).
if(isset($_SESSION['key'])){
if($_SESSION['key'] == $_COOKIE['key']){
// do stuff here
}
else {
die();
}
}
else {
die();
}
_ «Я не вижу никакого способа, как хакер может как украсть идентификатор $ _SESSION, так и в то же время знать зашифрованный ключ "_ - почему бы и нет? Вы сохраняете как идентификатор сеанса, так и свое случайное значение в файлах cookie, поэтому, если злоумышленник получает доступ к одному, почему они не должны иметь доступ к другому одновременно? // Ваш вопрос читается так, как будто вы, скорее, новичок в этой области - в этом случае я думаю, что было бы лучше, если бы вы использовали механизм сеанса PHP как есть, и не пытайтесь ничего добавлять к чему-либо самостоятельно. – CBroe
Да, конечно, моя цель - защитить мое приложение, к сожалению, я знаю, что я не могу защитить компьютер от взлома, но то, что я в основном хочу предотвратить, - это угадать идентификатор сеанса, тогда даже я думаю, что если у вас есть идентификатор сеанса в вашем браузере вам также понадобится гостевой зашифрованный ключ, соответствующий этому пользователю. – Mireille28
Итак, вместо того, чтобы угадать одно значение, злоумышленнику теперь нужно угадать два. По сути, вы только что добавили * больше энтропии *, что означает, что злоумышленник должен угадать * более длинное значение *. Вы можете реализовать это просто, создав более длинный идентификатор сеанса, он имеет тот же эффект. – deceze