在数据库中存储用户/客户端密码?需要你的意见

时间:2011-08-04 16:43:38

标签: php mysql encryption hash passwords

我正在为我的客户构建网站,作为其中的一部分,我创建了电子邮件地址,FTP帐户,GoogleAnalytics帐户等等。

随着新客户的加入,管理所有这些信息变得非常困难。所以我决定建立自己的小PHP,MySQL驱动的管理面板,我可以存储必要的数据。

客户经常问我是否可以重新发送用户名和密码。此时此类数据存储在Excel表中,该表已加密并存储在TrueCrypt容器中。由于我的工作性质,将容器放在USB记忆棒上并随身携带然后只需将其插入某台计算机并输入所需的密码即可解密它(只需考虑键盘记录器)就非常烦人。

无论如何,总而言之,我已经到了必须把所有这些都放到互联网上的地步。最大的问题是如何保护FTP,电子邮件帐户等密码。使用哈希函数不是一个选项,因为我必须重新发送密码(我已经尝试向客户解释我保留所有这些信息并不安全,但他们没有我想听我:))。 这让我只是加密/解密选项(或者我错了),我不喜欢。

最后我的问题是:你对我有什么建议吗?在我的情况下你会做什么?除了登录表单之外,您如何看待使用.htpasswd保护目录的选项?

谢谢!

4 个答案:

答案 0 :(得分:6)

如果你已经重新发送了用户名/密码,那么就没有理由你不能发送新的密码...这样你就可以使用哈希函数存储密码,绕过所有“zomg它可以被解密“担忧。

我不知道以加密形式存储用户名是否有很多安全性,因为用户名本身就没用了。

答案 1 :(得分:2)

在数据库中存储未散列的密码不是一种选择。尝试向您的客户解释,如果他们忘记了密码,那么更改密码会比有人破解您的服务器并获得密码少得多。

答案 2 :(得分:2)

从技术上讲,使用mcrypt进行网络应用程序的SSL加密是一个显而易见的解决方案,但我不会从根本上解决这个问题,并且会让我自己100%合法排序。

首先,我不允许Web脚本访问这些信息,我会严格限制我的SQL,以至于它不好笑(例如,服务器上的1个单独的数据库,1个单独的用户,尽可能地限制权限,从不触摸它与root访问权限,只有在服务器上运行的服务,如果可能的话,当你不需要它时关闭服务器等),我也只会通过SSH触摸数据。永远不要永远不要使用服务器根访问信息。尽可能设置密码,尽可能地加强root访问权限并忘记它完全存在。

接下来,我会让我的客户签署一份法律文件,完全赔偿因数据落入坏人之手而造成的任何损失或损害。我会让他们签署一份文件,说明完全理解风险,并且列出的清单并不完整。如果可能的话,我也会选择加入而不是强制性的。

这是一个可怕的地方,我永远不会做这样的事情这么好运,并确保您的专业赔偿保险是最新的。

答案 3 :(得分:0)

如果在将密码发送到客户端之前更改密码不是一个选项,我会将其存储在DB中的主密码加密。

您可以使用PHP mcrypt加密/解密密码。只是不要在任何地方保存主密码,这样就足够安全了。

实现一个用主密码解密密码并通过mail()函数自动发送给客户端的系统应该不难。