在会话中存储密码是否安全?

2022-08-30 20:21:29

我需要经常在会话中使用密码。我正在使用密码加密的密钥加密我的用户数据。这就是我的问题。将明文密码存储在php会话中(不是cookie,所以不是客户端)是否安全?有没有更好的方法?或者我应该每次都向我的用户询问密码吗?

我使用phpseclib用用户密码加密rsa的私钥。每次我想访问密钥时,我都需要密码。我有两个选择:要么我存储密码,要么存储密钥,我认为这两者都不是很好。我不能使用密码哈希进行加密,因为哈希以“明文”形式存储在数据库中...


答案 1

以任何容量在任何地方保留明文密码通常是一个坏主意。会话本身是安全的,但仅与服务器环境的其余部分一样安全。管理员或其他合法和恶意的用户都可以访问存储在其上的数据。如果可以避免,您永远不想处理客户的秘密;这也意味着您希望在任何情况下都避免看到用户的密码,并且您应该以明文密码尽可能短的方式构建代码。

如果需要在会话期间对某些内容使用密码,则应构建应用,使其永远不会使用纯文本密码,而是使用密钥派生函数从密码派生密钥,然后将其用于敏感任务。这样,公开用户密码的机会就会少得多。请记住,用户拥有的唯一安全性是只有他应该知道的密码的保密性


答案 2

如果这样做并且当黑客访问您的服务器时,他们将看到纯文本形式的密码。切勿存储纯文本密码(无论在何处)


关于一般问题。您向用户询问一次密码,并根据存储的加密密码验证加密密码 - 假设在数据库中。如果它们相同,则启动新会话。当用户下次尝试访问您的网站时,您将检查此用户的会话是否存在。因此,无需在会话中存储密码。


推荐