我的一个Rails应用程序将依赖于内存中的密钥,因此只有当管理员转到某个页面并上传有效密钥时,它的所有功能才可用。
问题是这个密钥需要安全地存储,所以同一台机器上的其他进程都不能访问它(所以memcached和文件系统不合适)。一个好主意是将其存储在应用程序的某个配置变量中,但新产生的实例将无法访问该变量。有没有想过如何在RubyEE/Apache/mod_passenger上实现这一点?
发布于 2009-05-31 17:27:48
真的没有办法实现这个目标。(这是所有DRM系统都有的问题)
你不能对操作系统保密。您的应用程序必须将密钥放在内存中的某个位置,并且操作系统内核可以读取它想要的任何内存位置。
您需要能够信任操作系统,这意味着您还可以信任操作系统来正确实施文件访问权限。这反过来意味着可以将密钥存储在只有rails-user-process可以读取的文件中。
这样想一想:即使你根本没有密钥,怎样才能阻止服务器上的攻击者简单地更改应用程序代码本身来访问禁用的功能?
发布于 2009-05-31 17:11:19
我将使用文件系统,只对文件所有者具有读访问权限,并确保ruby进程是此用户拥有的唯一进程。(使用chmod 400 file)
您可以获得比这更复杂的内容,但这一切都归结为使用unix用户和权限。
发布于 2009-05-31 16:47:11
在文件系统中对其进行大量加密?
https://stackoverflow.com/questions/932423
复制相似问题