Security 密码存储和安全密码传输
我正在开发一个系统(基于PHP,但这并不重要),该系统将用户密码保存在数据库中。但是,在安全性方面,我需要考虑如何保护密码并确保密码传输机制的完整性 我选择了保护数据库中用盐散列的密码,但在将密码从浏览器传输到服务器(将用于非安全连接)方面,我不确定如何检查它Security 密码存储和安全密码传输,security,passwords,password-protection,password-encryption,Security,Passwords,Password Protection,Password Encryption,我正在开发一个系统(基于PHP,但这并不重要),该系统将用户密码保存在数据库中。但是,在安全性方面,我需要考虑如何保护密码并确保密码传输机制的完整性 我选择了保护数据库中用盐散列的密码,但在将密码从浏览器传输到服务器(将用于非安全连接)方面,我不确定如何检查它 所以我的问题是,有没有人知道有什么安全机制可以让客户端发送他们的密码,然后可以将其与DB(使用salt)进行比较除了客户端浏览器内存之外,任何地方都没有明文密码?整个行业都是通过SSL通道以明文形式发送密码 也就是说,您必须确保登录页面及
所以我的问题是,有没有人知道有什么安全机制可以让客户端发送他们的密码,然后可以将其与DB(使用salt)进行比较除了客户端浏览器内存之外,任何地方都没有明文密码?整个行业都是通过SSL通道以明文形式发送密码 也就是说,您必须确保登录页面及其加载的所有资源都是通过HTTPS提供的。这将保护传输中的密码。一旦密码到达另一端,您就可以散列并与数据库中的密码进行比较 发送散列或其他深奥的解决方案(尊重“仅在浏览器内存中使用明文的密码”)除了用一个秘密交换另一个秘密外,什么都做不了——攻击面保持不变。
您可以在客户端混淆密码并添加一个基于时间的组件,但由于所有逻辑都必须在客户端,因此可以反转,因此您只需添加“模糊性”(通过模糊性实现安全性是不值得的).在整个行业中实现这一点的方法是通过SSL通道以明文形式发送密码 也就是说,您必须确保登录页面及其加载的所有资源都是通过HTTPS提供的。这将保护传输中的密码。一旦密码到达另一端,您就可以散列并与数据库中的密码进行比较 发送散列或其他深奥的解决方案(尊重“仅在浏览器内存中使用明文的密码”)除了用一个秘密交换另一个秘密外,什么都做不了——攻击面保持不变。
您可以在客户端混淆密码并添加一个基于时间的组件,但由于所有逻辑都必须在客户端,因此可以反转,因此您只需添加“隐蔽性”(通过隐蔽性实现安全性是不值得的)。是的,这就是我的想法,但我刚刚写了一个答案,使用RSA提供了相当多的安全性,但在理想情况下,我希望在您自己的代码中使用SSlimpenting crypto是一个非常非常糟糕的主意。最好的情况是,您最终获得了通过SSL运行服务所需的40-50美元的安全性。在更糟糕的情况下,您最终会创建一个可怕的混乱和易受攻击的服务。是的,这正是我所想的,但我刚刚写了一个答案,使用RSA提供了相当多的安全性,但在理想的世界中,我希望在您自己的代码中使用SSlimpenting crypto是一个非常非常糟糕的主意。最好的情况是,您最终获得了通过SSL运行服务所需的40-50美元的安全性。在更糟糕的情况下,您最终会造成可怕的混乱和易受攻击的服务。