Слабость системы заключается в том, что «авторизованный» токен отправляется в виде cookie в виде открытого текста, и это та же слабость, независимо от того, находится токен в базе данных или нет, и защищается с помощью HTTPS-соединений. *
Сказав это, большинство сайтов не используют HTTPS. Они делают компромисс. Если вы не используете HTTPS и хотите сравнить отправку аутентифицированного куки-файла с посылкой куки-файла - это ключ базы данных, то в первой нет ничего, кроме последней.
Рекомендуется также указать IP-адрес запроса и дату истечения срока действия.
Нет необходимости хранить токен в зашифрованном виде в файле cookie, однако - он одинаково безопасен и гораздо более простой для отправки открытых текстовых учетных данных и затем криптографически безопасный хэш учетных данных и секрета. Подробнее см. HMAC . HMAC в основном:
Представьте себе, что переменные username, expires, ip_address и salt (случайное число) были сохранены в HttpOnly cookie; Вы извлекаете их, а также ваш хэш, который также был в cookie. В вашем скрипте у вас есть дополнительный «пароль», который никогда не сохраняется непосредственно в куки:
hash = hash_hmac("sha256",username+expires+ip_address+salt,"password")
Безопасность этого хэша основана на качестве пароля . Это должна быть произвольная строка из цифр, букв и знаков препинания, длиной не менее 20 символов, которая хранится в ваших серверных сценариях.
Если хеш в файле cookie верен, вы можете быть уверенным , что хешированные поля не были изменены! Вероятность того, что злоумышленник произведет значимое столкновение, составит от одного до нескольких миллиардов [1] - безусловно, за пределами вычислительной мощности всех компьютеров во вселенной и нескольких миллиардов лет. Это так безопасно, если ваш пароль является случайным.
Но вся система является лишь ударом по скорости для решительного злоумышленника и подходит только для обычных веб-сайтов, а не для таких вещей, как оплата или ожидание безопасности пользователя. Без HTTPS система не защищена, а с HTTPS аутентификация файлов cookie не требуется.
Решительный злоумышленник может получить доступ к вашему сайту для восстановления пароля - ничто не мешает им восстановить данные для входа в базу данных при тех же обстоятельствах, поэтому ничем не отличается от подхода к базе данных, изложенного в этом вопросе.
Решительный злоумышленник может скопировать учетные данные и отправить злые запросы от имени пользователя, например, csrf и т. Д.
и т. Д.
[1] Я занижаю шансы.