登录验证机制 - 客户端发送用户名/密码的正确方法

时间:2012-07-25 15:51:58

标签: security

我很好奇如何正确地将用户名和密码从网站登录表单发送到服务器。

如果我只是发送用户名和密码而不将它们散列到https服务器,那么我在 POST 请求中发送的密码是如何泄露给某人嗅探包并查找密码的?服务器已启用https。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

如果服务器启用了HTTPS,那么通过线路传输的任何数据都将被加密。如果没有一方注意到,只有网络的攻击者才能通过HTTPS嗅探一个明文密码,这将是非常困难的。

HTTPS在传输层上使用SSL / TLS,旨在提供加密和身份验证。 SSL / TLS协议作为其握手的一部分,协商每个会话不同的对称加密密钥,并与强大的算法一起使用以保护线路上的数据。

为了缓解“中间人”攻击,客户端和服务器用于建立共享加密密钥的非对称密钥也由证书颁发机构进行加密签名,以提供信任保证和防止修改证书。只要证书颁发机构可以信任,就可以轻松检查证书本身的签名和服务器名称。所有现代浏览器都会自动执行此操作,并在证书出现任何问题时向用户发出警告。

只要您和您的用户了解正确使用SSL的问题(例如,保护您的私钥安全,并确保您的用户注意浏览器警告),通过SSL发送明文密码就可以了。连接。

如果您的应用程序的需求不能满足要求,您可能会考虑X.509身份验证(使用客户端和服务器端的证书)或Kerberos身份验证(不会发送密码而不是线)。但是,对于基本的Web应用程序,这两种解决方案都是过度的。