#drupal #encryption #sensitive-data
#drupal #шифрование #конфиденциальные данные
Вопрос:
Мне нужно использовать конфиденциальные данные с Drupal для использования пользовательского модуля. Если я просто установлю их через графический интерфейс, они будут сохранены в базе данных в незашифрованном виде.Любой, у кого есть к нему доступ, получит доступ к моим конфиденциальным данным.
На данный момент я вижу два решения:
- Найдите способ безопасного хранения этих учетных данных в базе данных;
- Поместите эти конфиденциальные данные в 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/encrypt5. Снова я. После некоторого дополнительного поиска и тестирования, похоже, что использование settings.php включить файл credentials.inc — не такая уж плохая идея. На самом деле, если Drupal взломан, а ваш сервер — нет, вы по-прежнему в безопасности. Если ваш сервер скомпрометирован, вы облажались;) Я бы явно пересмотрел, какой метод использовать…
Ответ №2:
Модуль шифрования предоставляет API, который поддерживает несколько различных методов шифрования, включая mcrypt (если он у вас включен).
Комментарии:
1. Спасибо за ссылку! Я увижу этот модуль.
Ответ №3:
Модуль шифрования — отличный способ зашифровать конфиденциальные данные в Drupal. Однако этот модуль не обеспечивает адекватного управления ключами (он хранит ключ шифрования в базе данных Drupal — подобно хранению ключей от вашего дома под вашим приветственным ковриком).
Наряду с Encrypt вам также понадобится дополнительный модуль, такой как Townsend Security Key Connection, который позволяет вам управлять ключами шифрования вне базы данных Drupal в диспетчере ключей шифрования (HSM, Cloud, VMware и т.д.). Просто помните — если вы неправильно управляете своими ключами шифрования, вы неправильно шифруете свои данные.
Полное раскрытие: Я работаю с Townsend Security в команде Drupal.