我正在开发一个系统(基于PHP,但对此不重要),可以将用户密码保存在数据库中。但是,在安全性方面,我需要考虑如何保护密码并确保密码传输机制的完整性。
我选择保护数据库中使用salt进行哈希处理的密码,但是在将密码从浏览器传输到服务器方面(将用于非安全连接),我不知道如何我可以检查一下。
所以我的问题是,是否有人知道任何可以允许客户端发送密码的安全机制,然后可以将其与数据库进行比较(与盐共享),除了客户端浏览器之外没有密码在明文处存储器?
答案 0 :(得分:3)
在整个行业中实现这一目标的方法是通过SSL通道以明文形式发送密码。
也就是说,您必须确保登录页面及其加载的所有资源都通过HTTPS提供。这将保护传输中的密码。一旦密码到达另一端,您就可以散列并与数据库中的内容进行比较。
发送哈希或其他深奥的解决方案(尊重你的“只在浏览器内存中以明文形式提供的密码”)不会做任何事情,只能将秘密换成另一个 - 攻击面保持不变。 您可以在客户端模糊密码并添加基于时间的组件,但由于所有逻辑必须在客户端上,无论如何它都可以反转,因此您只是添加“默默无闻”(通过默默无闻的安全性是不值得的)。