Использовать зашифрованный токен или нет?

Для аутентификации API на основе токена: рекомендуемая практика:

  • Сохранить токен в базе данных в зашифрованном или незашифрованном виде?
  • Для аутентификации: найти пользователя на основе токена (возможно, только если токен хранится в базе данных в незашифрованном виде) или на основе, например, адреса электронной почты пользователя?

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


person Nick    schedule 22.01.2016    source источник


Ответы (1)


Я бы рассматривал это как пароль - зашифровал бы его.

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

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

Не то чтобы я выступал за то, чтобы не сбрасывать токен! Просто, это на одну неотложную проблему меньше в пылу момента.

person Tim    schedule 22.01.2016