Ян в своем ответе уже указал, что использование значений cookie для указания аутентифицированной природы пользователя является плохим. Я сосредоточусь на способе управления cookie-файлами сеанса.
Сессионные куки / токены должны быть уникальными и не должны разглашаться другим пользователям. Использование HTTPS гарантирует, что их нельзя будет прослушать по проводам в вашем приложении. Но можно ли угадать значения токена сеанса? Если так, у вас есть проблема; современные приложения полагаются на безопасную среду для создания сеансовых файлов cookie / токенов, используя хороший PRNG. Если ваше приложение не имеет аналогичного уровня случайности, то предположите, что маркер сеанса может быть легко выведен, что приведет к тому, что пользователи смогут подделывать других пользователей.
Кроме того, использование шифрования в определенных частях токена сеанса представляет интерес. Надежно ли управляется ключ дешифрования для этих частей? Другими словами, является ли ключ жестко запрограммированным, или он является отдельным ключом на установку или генерируется случайным образом с коротким сроком службы? Если ключ может быть угадан, выведен или скомпрометирован каким-либо образом, то у вас более или менее та же проблема.
Использование шифрования для сеансового ключа также может сделать его уязвимым для атаки оракула, но я не уверен в этом. Более подробная информация поможет.
Я просто догадываюсь здесь, поскольку у меня нет точных деталей алгоритма, но простое использование HTTPS не должно давать никакого чувства безопасности. Я заметил сессионные токены, которые подчиняются математическим последовательностям в дикой природе.
Наконец, необходимо проверить наличие жесткого ограничения конфигурации для продолжительности сеанса и / или продолжительности скользящего окна для истечения срока действия маркера сеанса. Иначе вполне возможно, что скомпрометированный сеанс будет живым как можно дольше, иногда требуя «физического» выселения злоумышленника из-за характера определенных систем.
PS: также проверьте алгоритм хеширования, используемый для паролей; использование соли это хорошо. MD5 сломан для всех практических целей.
Последствия использования пользовательского механизма управления сеансами
На первый взгляд, использование маркеров сеанса без использования файлов cookie, по-видимому, не вызывает каких-либо серьезных проблем, но можно потерять некоторые функции безопасности, которые доступны на большинстве платформ - флаги cookie. Флаги secure и HttpOnly cookie снижают риск прослушивания cookie по проводам (при отправке клиентом на сервер), а также гарантируют, что код на стороне клиента не имеет доступа к токену, который впоследствии может быть скомпрометирован атака XSS. Таким образом, использование cookie-файла сеанса лучше, чем использование пользовательского токена сеанса (практически без проверки на уровне реализации).