使用Drupal存储敏感数据

5
我需要使用Drupal处理敏感数据的自定义模块。如果我简单地通过GUI设置它们,它们将以未加密的方式存储在数据库中。任何有权访问它的人都可以访问我的敏感数据。
目前我能想到两个解决方案:
1. 找到一种安全地将这些凭据存储到数据库中的方法; 2. 将这些敏感数据放入credentials_inc.php文件中,在settings.php中包含它来设置变量,供我的自定义模块使用,并确保没有其他人可以读取该文件。
你认为哪种解决方案更好?你有什么推荐?还有其他更好的选择吗?
此致敬礼。

你需要读取哪种敏感数据并在某个时刻将其显示在屏幕上? - k to the z
访问外部Web服务的凭证。我们不需要展示它们。我们只需要这些凭证用于自定义模块使用外部Web服务。 - Korchkidu
3个回答

6
我会首先使用SecurePages模块,以确保数据在传输过程中不被窃听。
然后尝试使用php的mcrypt来加密信息,并提供一个简短的示例来加密解密
一旦信息得到保护,您应该没有问题将数据存储在Drupal的数据库结构中。另外,重要提示,您可以查看hook_init(),而不是尝试在settings.php中添加内容。这通常是一种不好的做法。

谢谢你的回答。这里有很多信息;)也许加密模块可以直接为我完成所有操作...我需要自己检查一下。 - Korchkidu
这是完全有可能的。这取决于你想要多少控制,以及你想要做多少编码工作。如果加密模块为你完成大部分工作,我肯定会使用它,但我仍然会把SecurePages视为必须。 - ohmusama
我会接受你的答案,因为我认为它是最完整的。请问你能否加上一个有关加密模块的注释呢? - Korchkidu
2
安装Encrypt模块,然后进入admin/settings/encrypt,如果您没有mcrypt phpmod,则将加密类型设置为Basic,如果您有mcrypt phpmod,则设置为AES。然后在您的代码中,您只需要使用$encrypted_string = encrypt($string)将其存储在数据库(BLOB类型)中,然后使用$decrypted_string = decrypt($encrpyted_string)进行解密。请查看http://drupal.org/project/encrypt。 - ohmusama
我又来了。经过进一步搜索和测试,似乎使用settings.php + include credentials.inc文件并不是一个坏主意。实际上,如果Drupal被攻击但你的服务器安全,你仍然是安全的。如果你的服务器遭到攻击,你就会完蛋了;) 我会清楚地重新考虑使用哪种技术... - Korchkidu

6

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


谢谢提供链接!我会查看这个模块。 - Korchkidu

1

加密模块 是在Drupal中加密敏感数据的绝佳方式。然而,该模块未提供充分的密钥管理(它将加密密钥存储在Drupal数据库中-就像将家里的钥匙放在欢迎垫下一样)。

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

完整披露:我与Townsend Security的Drupal团队合作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接