Вводя просто идентификатор пользователя в cookie - это не безопасность. Как вы указываете, любой может придумать значение cookie.
Сессии: Вместо этого вам нужно помещать произвольное (например, случайное) значение в файл cookie, а затем на сервере искать личность пользователя в таблице сопоставления. Это произвольное значение должно часто меняться, поэтому обычно у вас сеанс входа в систему длится, скажем, 30 минут. Каждый логин предоставляет новое произвольное значение, и это значение известно как идентификатор сеанса.
Недействительность: Сессии аннулируются путем удаления этой записи из таблицы поиска (на стороне сервера) через определенный промежуток времени без каких-либо запросов (например, 30 минут). Любой запрос с идентификатором сеанса, который не находится в таблице, обрабатывается как не прошедший проверку подлинность запрос, и вы снова запрашиваете логин. Не имеет значения, забывает ли пользователь выйти из системы.
Взлом: Поскольку значение произвольное, хакеру не известно заранее знать, каким будет идентификатор будущего сеанса. Вы по-прежнему уязвимы для кражи сеансов, но это намного сложнее: хакеру нужно найти идентификатор сеанса только во время его использования, а затем использовать его только в течение определенного времени. Вы можете предпринять некоторые шаги для предотвращения этого, например, только для того, чтобы запросы определенного сеанса поступали с определенного IP-адреса. Вы также можете быстро запускать идентификаторы сеанса, даже каждый запрос, но есть отрицательные стороны этого. В общем, предоставление уникального идентификатора сеанса для каждого входа в систему, особенно когда это делается через HTTPS, достаточно для большинства потребностей аутентификации.
Стойкость: Если количество параллельных пользователей невелико за любой период сеанса (например, 30 минут), вам необязательно помещать его в базу данных. Поддержание этого в памяти - это небольшие накладные расходы, но имеет тот недостаток, что при циклизации сервера все пользователи должны снова войти в систему. Если вы поместите идентификатор сеанса в базу данных, вы должны быть уверены, что при запуске сервера он может очистить все старые сеансы.
Информация о пользователе: По-прежнему существует значение для ввода адреса электронной почты пользователя в файл cookie, но только для использования в качестве идентификатора пользователя по умолчанию для входа в систему. Это должно рассматриваться только как удобство для пользователя, а не как указание на то, что пользователь аутентифицирован.
", но токены также уязвимы для этого". На обычных серверах, когда я выхожу из системы, любой, кто украл мой файл cookie, больше не может его использовать. Да, куки не должны быть украдены, но необходима защита в глубину. –
Это. Должно быть реализовано в Play. – BAR