我目前正在设计一个Web应用程序,其中一个要求是保护用户凭据及其角色。现在除了通常的pwd哈希+盐+ .... 我想把这些特定的表放在加密的H2数据库中,其余的数据放在MySQL数据库中。在我的情况下H2的优点是:内存存储,因此意味着更快的访问;加密的数据库,以便在服务器受到威胁时提供额外的安全保护。
我的问题:当需要额外的安全层时,这是一种常见的做法吗?意思是从其他数据中分离登录信息(在我的情况下,它是敏感数据)是个好主意吗?
由于
答案 0 :(得分:1)
好的,我在安全论坛上得到了答案,对于那些感兴趣的人,这是链接https://security.stackexchange.com/questions/7062/securing-sensitive-data-in-a-db-is-using-h2-worth-it
答案 1 :(得分:0)
我认为这并没有真正增加相关的安全层。
如果您的服务器受到了侵害和您的服务器可以验证用户的凭据,那么任何泄露您服务器的人都有必要的数据来验证它(例如:你需要在服务器上存储加密密钥/密码来解密数据库,除非你在每次启动时都输入它。)
并且:它使你的设置变得相当复杂,这本身就会导致许多安全问题(“为什么组件A不能读取这个文件?哦,我只是让它具有世界可读性”)。简单可以有利于安全。
答案 2 :(得分:0)
如果应用程序非常简单,我认为您只能使用一种类型的数据库,例如MySQL的。您可以在存储到数据库之前对密码进行哈希处理。请注意,散列与加密不同,因为您无法从散列密码中获取实际密码。当用户尝试登录时,您将对用户输入的密码进行哈希处理,并比较已存储在数据库中的哈希值。如果使用salt值,那么即使黑客能够访问哈希密码,黑客也很难获得实际密码。
对于更复杂的应用程序,我建议使用其中一个ldap服务器(例如openladp)。然后您可以免费获得密码策略和散列。