Задать вопрос
@alexbagoff2
ИТ специалист

MySQL + PHP :: Хранение паролей клиентов в базе данных с целью их извлечения, как защить?

Добрый день.
Вводные: Компания занимается ИТ аутсорсом, разрабатывается личный кабинет клиентов, есть необходимость хранения паролей клиентов от их сервисов (сервера, хостинги, и тд) в базе данных с возможностью их дальнейшего извлечения самим клиентом в личном кабинете (аля, нажал "показать пароль" и увидел пароль от своего сервиса) - вероятно шифрование.

Может кто использовал в реальных проектах похожее? Каким методом лучше реализовать шифрование? Надежность...
  • Вопрос задан
  • 260 просмотров
Подписаться 2 Средний 1 комментарий
Решения вопроса 1
@rPman
Забудем что принципиально хранить пароли - плохая практика, но так как задача уже такова что хранение вынужденное то:
1. шифровать логины и пароли (весь набор данных, не имеющих смысл друг без друга, лучше хранить сериализованными в одном поле, особенно когда от задачи к задачи поля меняются, т.е. логин пароль почта api key, gpg ключи шифрования и т.п. пусть это будет свободная json строчка, за ее анализ отвечает клиентская часть приложения)
2. ключом/паролем, который не хранится в базе данных (он должен являться частью бакэнда, т.е. в том месте где на бакэнде хранятся настройки подключения к внутренним сервисам либо отдельное место хранения) - при разделении работ между людьми (обслуживать базы могут другие люди, чем те кто имеет доступ к бакэнду) чувствительные данные не утекут легко.
3. логируй все, т.е. показал пароль - сохрани в специальном логе (в базе или файлах уже вопрос организации работ) - кто, когда, с какой машины, что получил
4. когда показываешь пароль на клиентской машине, повторно запрашивай авторизацию (чтобы не использовалась автосохраненная), важный момент, это исключит кражу данных уже на стороне клиента, очень мало кто правильно организует рабочее место (это просто неудобно и дорого).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
solotony
@solotony
покоряю пик Балмера
я так делал

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

все данные подлежащие шифрованию сразу шифровал на клиентской машине и на сервере хранил только шифрованные данные.

p.s. вопрос надежности надо рассматривать исходя из потенциальных атак и общих требовний.
Ответ написан
Комментировать
есть необходимость хранения паролей клиентов от их сервисов (сервера, хостинги, и тд)

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

Для хранения лучше использовать уже существующие хранилища для секретов. Например Hashicorp Vault.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы