Это разумный способ реализовать функцию «запомнить меня» - PullRequest
8 голосов
/ 27 марта 2009

Если пользователь заходит на сайт и говорит «запомни меня», мы получаем уникальный идентификатор пользователя, шифруем его с помощью RijndaelManaged с размером ключа 256 и помещаем его в файл cookie httponly с установленным сроком действия, скажем. 120 дней, срок действия обновляется каждый успешный запрос к серверу.

При желании мы генерируем вектор инициализации на основе пользовательского агента и части адреса ipv4 (последние два октета).

Очевидно, что в него не встроена настоящая система истечения срока действия, пользователь может технически использовать этот зашифрованный ключ навсегда (учитывая, что мы не меняем ключ на стороне сервера) ..

Я учел тот факт, что для разрешения этой функции мне нужно разрешить пользователю обойти вход в систему и дать мне свой уникальный идентификатор (который является guid), я полагал, что один гид действительно трудно угадать пользователи ведут, но оставляют сайт открытым для атаки бот-ботами, генерирующими руководства (я понятия не имею, насколько реалистично для них найти законный guid) ... вот почему есть шифрование, когда сервер знает ключ шифрования, и опционально iv относится только к браузеру и ip части.

Должен ли я рассмотреть другой подход, когда сервер выдает билеты, связанные с пользователем, и эти билеты будут иметь известную дату истечения срока действия, поэтому сервер будет контролировать истечение срока действия? я должен действительно заботиться об истечении срока действия? помните меня, помните меня в конце концов?

С нетерпением жду смирения;), Приветствия.

Ответы [ 3 ]

6 голосов
/ 27 марта 2009

Очень похожий вопрос.

Решение вашего вопроса в этом сообщении в блоге

"Постоянный логин Cookie" Лучший Практика "описывает относительно безопасный подход к реализации знакомая опция "Запомнить меня" для веба места. В этой статье я предлагаю улучшение, которое сохраняет все Преимущества этого подхода, но и позволяет обнаружить, когда постоянный логин cookie был украдены и использованы злоумышленником.

Как говорит Джакко в комментариях: для более подробной информации о безопасной аутентификации прочитайте Полное руководство по аутентификации веб-сайта .

0 голосов
/ 27 марта 2009

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

Включение IP-адреса в расчет, вероятно, является плохой идеей, так как это приведет к тому, что пользователи, использующие публичные сети, будут мгновенно забыты.

Использование грубой силы для нахождения GUID нелепо, так как существует 2 128 возможностей.

0 голосов
/ 27 марта 2009

Вы рассматривали что-то вроде Open Id? Как ТАК использует.

...