1

我正在使用一个系统(基于PHP,但对此不重要),它保持用户密码保存在数据库中。但是,就安全性而言,我需要考虑如何保护密码并确保密码传输机制的完整性。密码存储和安全密码传输

我选择在数据库中使用salt进行哈希处理的密码,但是从密码从浏览器到服务器(将用于非安全连接),我不确定我如何检查它。

所以我的问题是,有没有人知道任何安全的机制,可以允许客户端发送密码,然后可以比较数据库(盐用盐)没有密码是明文在任何地方,除了客户端浏览器内存?

回答

3

在整个行业中完成的方式是通过SSL通道以明文形式发送密码。

也就是说,您必须确保登录页面及其加载的所有资源通过HTTPS提供。这将保护传输中的密码。一旦密码进入另一侧,就可以对数据库中的数据进行散列和比较。

发送散列或其他深奥的解决方案(尊重你的“只在浏览器内存中以明文形式输入的密码”)不会做任何事情,而只是交换一个秘密 - 攻击面保持不变。 您可以在客户端混淆密码并添加基于时间的组件,但由于所有逻辑必须位于客户端上,因此可以颠倒过来,因此您只需添加“模糊”(通过隐藏并不值得安全)它)。

+0

是的,这就是我的想法,但只是写了一个答案,使用RSA提供相当数量的安全性,但在理想的世界中,我想要SSL – topherg

+1

在您自己的代码中实现加密真的是非常糟糕理念。最好的情况下,你最终将获得与通过SSL运行服务所需的40-50美元相同的安全性。在最糟糕的情况下,你最终会创造一个可怕的混乱和脆弱的服务。 – Paradoxengine