1

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

我选择保护数据库中用盐散列的密码,但在将密码从浏览器传输到服务器(将用于非安全连接)方面,我不确定如何检查它。

所以我的问题是,有没有人知道任何安全机制可以允许客户端发送他们的密码,然后可以将其与数据库(与盐一起使用)进行比较,而密码在除客户端浏览器内存之外的任何地方都是纯文本的?

4

1 回答 1

4

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

也就是说,您必须确保登录页面 - 以及它加载的所有资源 - 通过 HTTPS 提供。这将保护传输中的密码。一旦密码到达另一边,您就可以散列并与数据库中的内容进行比较。

发送哈希或其他深奥的解决方案(以尊重您的“仅在浏览器内存中以明文形式显示的密码”)只会将秘密交换为另一个 - 攻击面保持不变。您可以在客户端混淆密码并添加基于时间的组件,但由于所有逻辑都必须在客户端上,因此它可以反转,所以您只是添加“晦涩难懂”(并且通过晦涩难懂的安全性是不值得的)。

于 2012-06-13T16:53:31.440 回答