Как хранить токены доступа OAuth 2 в базе данных? - PullRequest
0 голосов
/ 16 октября 2018

Я видел много потоков по этому вопросу, но ничего конкретного о том, как это сделать.

В настоящее время я заставляю пользователя проходить проверку подлинности с помощью третьей стороны через OAuth2, и в ответ я получаю маркер доступа.

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

Мой вопрос касается того, что делать с этой записью базы данных для обеспечения безопасности.

Я не могу хэшировать его (как и пароль), так как мне нужно иметь возможность читать и использовать оригинал для вызова третьей стороны от имени пользователя.

Итак, яосталось оставить все как есть, найти двухсторонний метод шифрования (есть ли лучший / рекомендуемый пакет npm?) или другое решение, о котором я не знаю.

У меня нет опыта в отношении безопасности для маркеров доступа -поэтому не знаю, как выбрать лучший маршрут, и буду признателен за предоставленную информацию.

Спасибо

1 Ответ

0 голосов
/ 24 октября 2018

Я хотел бы хранить этот токен доступа в течение длительного времени, и поэтому я использую базу данных для этого

Решением для этого является шифрование данных перед их сохранением вбазу данных и расшифровывать ее каждый раз, когда вам нужно получить к ней доступ.В вашем случае я считаю, что симметричное шифрование - это правильный выбор, поэтому вам потребуется личный ключ, который всегда должен храниться в безопасности.Наиболее используемый алгоритм для этого типа шифрования - это Advanced Encryption Standard , также известный AES, и для вашего случая использования рекомендуется реализация AES-256.

Пока этот вопрос в Security Stack Exchange не соответствует точно вашему сценарию, ответы на него могут помочь вам лучше понять процесс шифрования / дешифрования данных в поле базы данных. Этот ответ , который содержит визуальное представление потока, может быть тем, который вы хотите посмотреть первым.

Теперь, когда у вас есть визуальное представление о потоке, вы можете захотеть прочитать эта статья , которая познакомит вас с базовой стратегией шифрования для хранения конфиденциальных данных в базе данных:

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

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

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

К этому времени вы должны иметь более полное представление о том, как защитить свой токен в базе данных, и, если мне будет позволено, я хотел бы дать одну рекомендацию и одно предупреждение, прежде чем я уйду ...

Во-первых, я настоятельно рекомендую вам поддерживать связь только по безопасному каналу связи, то есть https.В настоящее время нет оправдания не использовать https, SSL-сертификаты теперь бесплатны с Lets-encrypt .

Я не могу хэшировать его (как пароль), так как мне нужно иметь возможностьчитать и использовать оригинал для вызова третьей стороны от имени пользователя.

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

В этом случае я хотел бы предупредить вас о том, что ваш сервер может стать объектом злоупотребления API, как показано на эта серия статей :

  • Очистка данных - автоматический сбор проприетарных данных из API.
  • Учетная запись аккаунта - повторное использование украденных учетных данных для входа в системуучетных записей в вашем сервисе.
  • Фальшивые фабрики учетных записей - Автоматическое манипулирование API для создания большого количества учетных записей, контролируемых ботами.
  • Агрегирование - Ваши данные aggregaиспользовать его как часть коммерческого предприятия без разрешения.
  • Обман как услуга - веб-приложения, позволяющие пользователям обманывать игровые и поощрительные платформы.
...