Как сохранить секретный ключ OTP на основе времени в MySQL

часов назад я разместил это: Является ли хранение секретного ключа в виде открытого текста в SQL плохим ходом?

Я считаю, что мой вопрос и резюме не были достаточно ясны. Я имел в виду секретный ключ для OTP на основе времени, а не обычный пароль. Да, у меня есть password_hash() для пароля, но не для секретного ключа. Сгенерированный секретный ключ может использоваться Authy или Google Authenticator для отображения текущего OTP каждые 30 секунд. Если вы, ребята, не говорите мне также хэшировать мой секретный ключ, я не понимаю, почему мой вопрос был дубликатом.

Что касается комментария Дата, я не вижу, как мне поможет otplib (библиотека javascript), поскольку мне все еще нужен другой случайный ключ для привязки к разным отдельным учетным записям, если только я не использую один и тот же ключ для все учетные записи. Кроме того, мне нужен способ отметить, какие ключи связаны с какой учетной записью, поэтому я возвращаюсь к моему основному вопросу о том, как безопасно хранить ключи, чтобы всякий раз, когда учетная запись пытается войти в систему с OTP, я мог проверить это.

Приношу извинения за беспокойство и заранее благодарю.

Я не знаю вашего рабочего процесса аутентификации, но почему вашему PHP-приложению вообще нужно хранить OTP? Обычно это будет генерироваться на стороне сервера и просто возвращаться вызывающей стороне. Не было бы необходимости его хранить.

Tim Biegeleisen 23.04.2019 08:12

Я следовал этому руководству: youtube.com/watch?v=t49zjBGD75U с некоторыми небольшими поправками. Кроме того, я храню не OTP, а секретный ключ. Секретный ключ будет показывать 6-значный OTP каждые 30 секунд, когда секретный ключ добавляется в аутентификатор Google или Authy.

Samuel Smith 23.04.2019 08:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
705
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я понимаю вашу проблему. Следуя инструкции otplib, я думаю, это то, что вам нужно хранить

import crypto from 'crypto';

authenticator.options = { crypto };

// Or if you're using the other OTP methods
// hotp.options = { crypto }
// totp.options = { crypto }

const secret = 'KVKFKRCPNZQUYMLXOVYDSQKJKZDTSRLD' <--- This is what you need to store, right ?
const token = authenticator.generate(secret); // 556443

Обычно этот ключ секрет генерируется из вашего идентификатора пользователя + YOUR_PRIVATE_SECRET_KEY.

YOUR_PRIVATE_SECRET_KEY — это ввод ключа в серверную среду.

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