【发布时间】:2016-07-05 14:49:36
【问题描述】:
为了尊重用户的隐私,我需要用一个只有他们自己知道的密钥来加密每个用户的信息。 服务器和任何可以访问服务器或数据库的人都不应该被信任
因此,我将使用每个用户的密码来加密他/她的安全关键数据。这就是我需要在会话处于活动状态时存储密码的原因,以便加密和解密他们的信息。
问题是:如果我将密码保存在会话中,对服务器具有完全访问权限的攻击者是否有可能从会话中检索存储的密码?
【问题讨论】:
-
那么,你想把密码保存在服务器上却又说服务器不可信,那为什么还要把密码保存在服务器上呢?矛盾矛盾...
-
为了实现这一点,您需要在客户端计算机上加密/解密数据,而不是服务器。但是你不能使用 JS,就好像你不能信任服务器你不能信任服务器来提供正确的 JS。你真的能做到吗?你能相信客户的电脑吗……?
-
如果您尝试通过密码盐加密数据,那么只有密码才能解密数据。由于数据被打乱,您将无法对数据进行任何处理,或者如果您从实际用户中抽象出内容,则至少用户表数据会。但问题是......如果知道服务器不可信,用户可能根本不相信服务器实际上正在加密数据。
-
密码不应该是可检索的。散列它们并在需要检索时将它们重置。
-
我不再喜欢 md5,但我通常会做一个 dbl 哈希。一次在客户端,一次在服务器上。这样,网络上的数据不是纯文本,但同时,以防万一用户设法通过 javascript 禁用散列客户端,至少额外的散列使其在服务器中保持安全..
标签: php security session privacy