我已经读过在数据库中存储密码的一种方法是通过以下方式。拥有一个包含用户名、哈希和盐列的数据库表。盐永远不会显示。

我用密码+盐生成哈希。密码由用户发送,不存储在数据库中。如果生成的哈希值与数据库中存储的哈希值相同,则密码正确。

但我有我的疑问。如果我发送密码,它在通过线路传输时可能会被嗅探,所以我认为也有必要对通信进行加密。那么使用哈希和盐只是为了保护管理员的数据?我的意思是,如果我将密码存储在数据库中,管理员可以轻松访问所有信息。如果我存储哈希,管理员将无法访问用户的信息,因为管理员没有一半的信息,只有盐而不是密码。然而,当用户需要发送密码时,这可能被某人嗅探,因此密码被暴露。

保护用户信息的最佳方式是什么?

谢谢。

最佳答案

散列密码还可以保护您的数据免受外界侵害。想象一下,如果有人使用 SQL 注入(inject)访问您的数据,他只会得到一个哈希值而不是通行证。您可以使用 HTTPS 通过网络进行安全通信,并使用现有的散列密码表来建立良好的安全模型。 Secure salted password hashing

关于sql-server - 如何安全地将密码存储在数据库中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15742123/

10-16 23:22