@Mikkkch

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

Здравствуйте, я реализовал систему аутентификации посредствам кукисов. При входе для пользователя генерируется токен и кладется с ключом на хранение. Когда пользователь заходит на страницу, которая должна запрещать вход пользователям, еще не вошедшим в систему, нужно редиректнуть или совершить какие-либо другие действия.
Вот как выглядит код:
authorization = False
cookie_key = request.cookies.get(self.cookie_key)

try:
    jwt.decode(cookie_key, self.secret, self.algorithm)
    authorization = True
except jwt.exceptions.DecodeError:
    pass

return authorization

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

В коде многих других людей я видел следующую проверку:
payload = jwt.decode(cookie_key, self.secret, self.algorithm)
username = payload.get['sub']
user = db.get(username)
if not user:
     pass

Есть ли от нее смысл?
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
@OlegPyatakov
pyatakov.com
В этом есть смысл на случай:
  • Пользователь был удален из БД после генерации токена
  • Дальше в коде с объектов user будет работа
  • Взломали сервис генерации токена. Конечно, такая проверка мало поможет, но это может быть звоночком
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час