Есть ли какие-либо преимущества в плане безопасности при шифровании переменных сеанса? [закрыто]
Предотвратит ли это, например, захват сеанса? Если нет, то что я могу сделать, чтобы сделать мои сеансы php безопасными?
2 answers
Клиенту отправляется идентификатор сеанса, а не переменная сеанса. Эти идентификаторы сеанса обычно устанавливаются в качестве файлов cookie в клиенте. Конечно, если кто-либо получит идентификатор сеанса (например, с помощью атаки межсайтового скриптинга) из браузера или клиента пользователя, он может установить идентификатор сеанса в своем собственном клиенте и выдать себя за другого пользователя.
Переменные сеанса, однако, обычно ссылаются на значения в массиве $_SESSION
. Видеть http://www.php.net/manual/en/function.session-start.php для примера. Эти значения никогда не передаются клиенту по сети.
Что касается защиты идентификаторов сеансов, я уже объяснял в первом абзаце, что они хранятся в браузере в виде файлов cookie. В сеансе HTTP файлы cookie передаются между сервером и клиентом в виде открытого текста. Это уязвимо для подслушивания (например, парень на маршрутизаторе, через который проходят ваши пакеты мог бы перехватывать ваши пакеты и считывать из них идентификатор сеанса). Лучший способ преодолеть эту проблему - вместо этого использовать HTTPS.
Я думаю, это зависит от того, что вы подразумеваете под "преимуществом безопасности". Если ваше приложение находится на общем хосте, и ваши данные сеанса хранятся в каком-то незащищенном центральном месте, где они могут быть открыты для чтения другими пользователями, то да, технически шифрование ваших сеансов дает некоторые преимущества в плане безопасности. Однако было бы гораздо лучше использовать ваше время и усилия, чтобы просто написать свой собственный механизм хранения сеансов, чтобы вы не хранили их в небезопасном местоположение в первую очередь; особенно учитывая, как легко сделать шифрование совершенно неправильным и дать себе ложное чувство безопасности.