2011-08-04 29 views
4

我建立我的客户,并为这部分网站创建他们电子邮件地址,FTP帐户,Google分析帐户等等等等。在数据库中存储用户/客户端密码?需要你的意见

随着即时得到新的客户,它变得非常难以管理所有那个信息。所以我决定构建我自己的小PHP,MySQL驱动的管理面板,我可以存储必要的数据。

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

无论如何,为了减少长话短说,我来到了必须把所有这些都放到互联网上的地步。最大的问题是如何保护FTP,电子邮件帐户等密码。使用散列函数不是一种选择,因为我必须重新发送密码(我已经试图向客户解释它不安全,我保留所有的信息,但他们不我不想听我说:))。 这让我只是加密/解密选项(或我错了),我不喜欢。

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

谢谢!

+0

那么,无论你做什么,如果你担心被拦截,请在你计划保存它的网站上使用SSL。 – Devin

+4

当我的客户忘记密码时,我会帮助他们从任何相关服务中申请新密码。在可能的情况下,我一定不要知道他们的密码。我知道这并不完全有帮助,但考虑到某些客户端可能会有所帮助,但它通常有助于解释通常情况下密码无法恢复。 – Brad

+0

@Devin,脱轨,SSL只确保客户端到服务器的数据在加密的安全通道中传输,但不能保证您的系统不会受到危害。 – Kumar

回答

6

如果您已经重新发送用户名/密码,那么没有理由不能发送新密码......这可以让您使用散列函数存储密码,绕过所有“可能的zomg”解密“的担忧。

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

+1

如果在电子表格中查找旧密码已经太耗时了,那么我怀疑他有时间去访问每个Web服务并要求更改密码。 –

+1

当然,在某些时候,你必须告诉客户,他们应该投资一两个后贴在他们的显示器旁边。帮助客户是一回事,完全是冲洗马桶并为他们擦脚屁股的另一件事...... –

+0

客户端可以在预定义的电子邮件中自动发送一个新的随机密码(在第一次使用时更改)根据要求。这样客户就可以单独处理这个问题,并且可能很快就会投入后续存储扩展! – laurent

2

不在数据库中存储散列密码不是一个选项。试着向你的客户解释,如果他们忘记了密码,那么改变它会比如果有人侵入你的服务器并获得它的问题少得多。

+0

准确!总是发送新的密码。 – laurent

0

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

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

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

+0

为什么要加密密码以将其存储在“安全”服务器上并以“不安全”电子邮件中的纯文本格式发送?您只能通过电子邮件发送临时密码,并且客户必须在第一次使用时更改它,因此记住/解密以前的密码没有意义。 – laurent

2

从技术上讲,使用mcrypt为web应用程序进行SSL加密是显而易见的解决方案,但我不会放弃这个根目录,并且会让我自己100%合法排序。

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

接下来,我会让我的客户签署一份法律文件,充分赔偿由于数据进入错误的手而导致的任何损失或损害。我会让他们签署一份文件,表明完全理解风险,并且列出的清单不完整。如果可能的话,我也会选择加入,而不是强制性的。

这是一个可怕的领域,我绝不会做任何像这样亲自如此好运的事情,并确保您的专业赔偿保险是最新的。