【问题标题】:Storing sensitive data with Drupal使用 Drupal 存储敏感数据
【发布时间】:2011-08-15 15:28:22
【问题描述】:

我需要在 Drupal 中使用敏感数据才能使用自定义模块。如果我只是通过 GUI 设置它们,它们将未加密地存储在数据库中。任何有权访问它的人都可以访问我的敏感数据。

目前我可以看到两种解决方案:

  1. 找到一种方法将这些凭据安全地存储到数据库中;
  2. 将这些敏感数据放入 credentials_inc.php 文件,将其包含在 settings.php 中以设置我的自定义模块可以使用的变量,并确保其他人无法读取该文件。

哪种解决方案最适合您?你有什么建议吗?还有其他最好的选择吗?

最好的问候。

【问题讨论】:

  • 什么样的敏感数据,您是否需要在某个时候将其读回屏幕?
  • 访问外部 Web 服务的凭据。不,我们不需要显示它们。我们只需要它们作为自定义模块来使用外部 Web 服务。

标签: drupal encryption sensitive-data


【解决方案1】:

The Encryption module 是在 Drupal 中加密敏感数据的绝佳方式。然而,这个模块没有提供足够的密钥管理(它将加密密钥存储在 Drupal 数据库中 - 就像将密钥存储在您的欢迎垫下一样)。

除了加密之外,您还需要一个额外的模块,例如 Townsend Security Key Connection,它允许您在加密密钥管理器(HSM、Cloud、VMware 等)中管理 Drupal 数据库之外的加密密钥。请记住 - 如果您没有正确管理您的加密密钥,那么您就没有正确加密您的数据。

全面披露:我在 Drupal 团队与 Townsend Security 合作。

【讨论】:

    【解决方案2】:

    Encryption module 提供的 API 支持几种不同的加密方法,包括 mcrypt(如果您启用了它)。

    【讨论】:

    • 感谢您的链接!我会看到这个模块。
    【解决方案3】:

    我将从使用SecurePages 模块开始,以确保沿途某处输入的数据不会被窥探。

    然后加密信息尝试使用 php 的 mcrypt 并附上一个简短的例子来说明如何使用 encryptdecrypt

    一旦信息得到保护,您就可以毫无问题地将数据存储在 drupal 的 db 结构中。另外,重要的一点是,您可以查看hook_init(),而不是尝试在 settings.php 中附加一些内容。这通常是一种不好的做法。

    【讨论】:

    • 感谢您的回答。这里有很多信息;)。也许加密模块直接为我做这一切......我将不得不自己检查。
    • 很有可能。这仅取决于您想要多少控制,以及您想要进行多少编码。如果加密模块为您完成了大部分工作,我肯定会使用它,但我仍然必须使用 SecurePages。
    • 我会接受你的回答,因为它是我认为最完整的。能否请您添加有关加密模块的说明?
    • 安装加密模块,完成后,转到 admin/settings/encrypt,如果您没有 mcrypt phpmod,则将加密类型设置为 Basic;如果您有 mcrypt phpmod,则将加密类型设置为 AES。然后在您的代码中,您只需要使用$encrypted_string = encrypt($string) 然后将其存储在数据库(BLOB 类型)$decrypted_string = decrypt($encrpyted_string) 中即可对其进行解密。查看drupal.org/project/encrypt
    • 我又来了。经过一些额外的搜索和测试,使用 settings.php + include credentials.inc 文件似乎不是一个坏主意。实际上,如果 Drupal 被入侵而你的服务器没有被入侵,你仍然是安全的。如果您的服务器受到威胁,那么您就完蛋了;)我显然会重新考虑使用哪种技术...
    猜你喜欢
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2014-05-25
    • 2020-02-01
    • 2021-04-10
    相关资源
    最近更新 更多