«Запомни меня на этом компьютере» — как это должно работать?

StackOverflow https://stackoverflow.com/questions/1074831

Вопрос

Глядя на файлы cookie Gmail, легко увидеть, что хранится в файле cookie «Запомнить меня».Имя пользователя/токен одноразового доступа.Это также может быть реализовано по-другому в тех случаях, когда имя пользователя является секретным.Но что угодно...дело не в очень высокой безопасности:вы крадете печенье и готовы к работе.

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

Это было полезно?

Решение

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

Традиционно используется тайм-аут: срок действия файла cookie истекает через определенный промежуток времени (или когда пользователь выходит из системы).

Все зависит от вашей модели безопасности.Если вы пишете внутреннее приложение компании, в котором вы ожидаете, что на одном компьютере будет только один пользователь, вам могут потребоваться более жесткие ограничения, чем у Gmail.

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

Другие советы

Вход в систему с другого компьютера не должен делать недействительным логин, связанный с файлом cookie на другом компьютере.Однако если пользователи выходят из системы или «не ты?войдите сюда», это должно очистить файл cookie, над которым работает пользователь.

Кстати, кражу cookie можно усложнить, настояв на https и сделав его не предназначенным для сценариев.

Добавлением ";HttpOnly» на выходе вашего файла cookie, это сделает файл cookie недоступным для JavaScript, например.

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
Set-Cookie: ASP.NET_SessionId=ig2fac55; path=/; HttpOnly
X-AspNet-Version: 2.0.50727
Set-Cookie: user=t=bfabf0b1c1133a822; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Tue, 26 Aug 2008 10:51:08 GMT
Content-Length: 2838

вы можете прочитать об этом больше

Файл cookie «Запомнить меня» также должен идентифицировать машину.Это должно быть связано с машиной, потому что есть места, где вы хотите, чтобы вас запомнили, и другие места, где вы этого не делаете (дом или работа).

Срок действия обычно устанавливается на разумный период (две недели) или после того, как пользователь явно вышел из системы.

Я бы связал каждый сеанс с IP-адресом.Если токен сеанса отправлен с IP-адреса, отличного от того, который у вас есть, отклоните его.

Токены доступа должны быть привязаны к IP, чтобы их нельзя было легко передавать между компьютерами.

Их также следует реализовать таким образом, чтобы пользователи могли видеть, на каких машинах у них есть активные токены.

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

Применяемая вами политика действительно зависит от данных, которые вы храните, и потребностей пользователя.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top