Я слышал, что некоторые люди считают, что хранение информации на сервере во время сеанса - плохая идея, что это небезопасно. В результате в функции многостраничного бизнес-процесса приложение записывает данные в базу данных, а затем извлекает информацию, когда это необходимо. Есть ли что-то небезопасное в хранении личной информации в сеансе?




Сами по себе HTTP-сеансы небезопасны по своей сути. Однако, в зависимости от сервера / контейнера вашего приложения, механизм, в котором файлы cookie сеанса передаются обратно в браузер (и отсутствие безопасности транспортного уровня - SSL), может позволить злоумышленникам выполнять различные атаки (межсайтовые сценарии, захват сеанса). , так далее.). Я бы потратил некоторое время на изучение этих вещей вместе с SQL-инъекцией, чтобы понять все разветвления использования HTTP-сессий. Если ваше приложение работает с брандмауэром, часто возникают гораздо большие риски безопасности, чем это, например, социальная инженерия.
Сохранение атрибутов в сеансе не представляет угрозы безопасности, если сам сеанс защищен от угон.
Есть несколько серьезных проблем, связанных с параллелизмом и сеансами. Поскольку очень часто несколько потоков одновременно выполняют запросы для одного сеанса, вы должны убедиться, что объекты, которые вы храните в сеансе, являются потокобезопасными. Либо сделайте их неизменяемыми, либо сделайте их потокобезопасными с помощью барьеров памяти, таких как синхронизация. Я очень рекомендую статья на эту тему Брайана Гетца.
@avgvstvs Спасибо за внимание. Я написал в Твиттере Брайану Гетцу, чтобы узнать, есть ли у него копия где-нибудь еще.
Помимо проблем с производительностью и параллелизмом, вам также следует подумать об удобстве использования. Работают ли несколько открытых страниц, кнопка "Назад", закладки, ссылки на ваш сайт и т. д.? В итоге я забронировал рейс не в тот день на aerlingus.ie и чуть не забронировал не тот отель на lastminute.com из-за их мрачных веб-сайтов.
Ссылка на статью не работает :-(