Плохо ли хранить токены к API в БД в чистом виде? Если да, то как их хранить?
Здравствуйте.
Я имею в виду те токены, которые позволяют получать данные пользователя по API. Например, данные от Яндекс.Паспорт'а.
Пароли в БД обычно хранятся в захешированном виде. При авторизации ввод пользователя хешируются и сраниваются с тем, что в БД. Если ввод и значение в БД одинаковые, то проиходит вход. Если нет, то вывод об ошибке.
А как быть с токенами? Они нам нужны в неизменном виде, иначе не получится получить данные по API. Однако если хранить их в неизменном виде, то любой, кто имеет доступ к БД, сможет получить конфиденциальную информацию пользователя (написав свой код для получения данных по API и подставив туда токен пользователя).
Вопрос - как хранить токены в БД?
Конкретно это касается языка PHP (мое приложение на нем).
sorry_i_noob, вот нашли дырку, угнали базу, код и конфиги, сидят довольные. А потом глядь - а расшифровать нечем! Пароль (или пароли) на другом сервере!
Stalker_RED, здорово. Но у меня немного другой вопрос. Зачем для каждого токена нужен свой ключ? Почему нельзя для всех применить один ключ?
И еще. Откуда брать ключи?
У каждого пользователя свой токен. И для каждого токена нужен свой ключ. То есть, неизвестно, сколько должно быть ключей. То есть, это не константа, а какая-то генерируемая (случайно) величина? Как ее генерировать?
sorry_i_noob, я нигде не писал, что для каждого нужен свой ключ, хотя это повысит безопасность - если один из ключей подберут, это не даст доступа к остальным записям. А иначе подобрав один расшифруют все.
sorry_i_noob, при некоторых условиях можно. Но вы не первый, кто над этим задумался, и поверьте, в современных решениях учтено очень много всего такого, о чем вы пока даже не догадываетесь.
Вообще с криптографией такая штука, что если ты специально не учил это все несколько лет, то лучше вообще ничего не изобретать, а использовать готовые библиотеки и следовать инструкциям.
Если интересно подробнее, там же указано откуда берутся эти псевдослучайные данные.
Вот, например, про getrandom.