免责声明:在点击-1按钮之前,先想一下“不要存储用户的凭据,用盐+辣椒哈希他们笨蛋!”,请阅读以下内容:< / p>
我正在开发一个项目,该项目将向用户询问其数据库的凭据(登录名/密码)。这些凭据将针对数据库进行尝试,如果连接成功,我将“保持”他们按照用户的要求对数据库进行一些工作(创建表,更改行,做一个SELECT,等等。)
这意味着,每次用户执行某些操作时,我都会在执行请求之前重新连接到数据库=&gt;我无法对凭据进行哈希处理,因为它们对后续请求无用。
如果你愿意,就像 PhpMyAdmin 。
所以我想出了各种各样的可能性,但每个都有缺陷。我正在寻求你的帮助,知道哪一个更好。
感谢您的帮助。
答案 0 :(得分:2)
我建议不要使用1.或2.,原因如下:
所以保留的是版本3的变体,将其存储在会话中。这有一个重要属性:如果您的会话存储不安全,这意味着您的服务器不安全。游戏结束。
为了防止对session.db的攻击,您可以在应用中使用硬编码的密钥库。此密钥库使用会话令牌进行加密,然后进行散列,结果将用作加密和解密客户端凭据的密钥。这样,攻击者就需要破坏session.db和你的应用程序(以获得密钥库)。如果他能够做到这一点,没有什么能帮到你。