Хранение конфиденциальных данных с помощью Drupal

#drupal #encryption #sensitive-data

#drupal #шифрование #конфиденциальные данные

Вопрос:

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

На данный момент я вижу два решения:

  1. Найдите способ безопасного хранения этих учетных данных в базе данных;
  2. Поместите эти конфиденциальные данные в credentials_inc.php файл, включите его в settings.php установить переменные, которые мог бы использовать мой пользовательский модуль, и убедиться, что никто другой не сможет прочитать файл.

Какое решение, по вашему мнению, является лучшим? Что вы порекомендуете? Есть ли другой лучший вариант?

С наилучшими пожеланиями.

Комментарии:

1. Что это за конфиденциальные данные и нужно ли их в какой-то момент считывать с экрана?

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

Ответ №1:

Я бы начал с использования модуля SecurePages, чтобы убедиться, что данные, введенные где-то по пути, не отслеживаются.

Затем для шифрования информации попробуйте использовать mcrypt от php с кратким примером того, как шифровать и расшифровывать.

Как только информация будет защищена, у вас не должно возникнуть проблем с сохранением данных в структуре базы данных drupal. Также, важное замечание, вы могли бы проверить hook_init() вместо того, чтобы пытаться добавить что-то в settings.php . В целом это плохая практика.

Комментарии:

1. Спасибо за этот ответ. Здесь много информации;). Возможно, модуль шифрования делает все это за меня напрямую… Мне придется проверить самому.

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

3. Я приму ваш ответ, поскольку он, на мой взгляд, наиболее полный. Не могли бы вы, пожалуйста, просто добавить примечание о модуле шифрования, пожалуйста?

4. Установите модуль шифрования, после этого перейдите в раздел admin / settings / encrypt, установите тип шифрования на Basic, если у вас нет mcrypt phpmod или AES, если у вас есть mcrypt phpmod. Затем в вашем коде вам нужно только использовать, $encrypted_string = encrypt($string) а затем сохранить его в базе данных (тип BLOB) $decrypted_string = decrypt($encrpyted_string) , чтобы отменить его шифрование. Проверьте drupal.org/project/encrypt

5. Снова я. После некоторого дополнительного поиска и тестирования, похоже, что использование settings.php включить файл credentials.inc — не такая уж плохая идея. На самом деле, если Drupal взломан, а ваш сервер — нет, вы по-прежнему в безопасности. Если ваш сервер скомпрометирован, вы облажались;) Я бы явно пересмотрел, какой метод использовать…

Ответ №2:

Модуль шифрования предоставляет API, который поддерживает несколько различных методов шифрования, включая mcrypt (если он у вас включен).

Комментарии:

1. Спасибо за ссылку! Я увижу этот модуль.

Ответ №3:

Модуль шифрования — отличный способ зашифровать конфиденциальные данные в Drupal. Однако этот модуль не обеспечивает адекватного управления ключами (он хранит ключ шифрования в базе данных Drupal — подобно хранению ключей от вашего дома под вашим приветственным ковриком).

Наряду с Encrypt вам также понадобится дополнительный модуль, такой как Townsend Security Key Connection, который позволяет вам управлять ключами шифрования вне базы данных Drupal в диспетчере ключей шифрования (HSM, Cloud, VMware и т.д.). Просто помните — если вы неправильно управляете своими ключами шифрования, вы неправильно шифруете свои данные.

Полное раскрытие: Я работаю с Townsend Security в команде Drupal.