我很好奇如何正确地将用户名和密码从网站登录表单发送到服务器。
如果我只是发送用户名和密码而不将它们散列到 https 服务器,我在POST请求中发送给嗅探包并找出密码的人的密码有多暴露?服务器已启用 https。
这样做的正确方法是什么?
我很好奇如何正确地将用户名和密码从网站登录表单发送到服务器。
如果我只是发送用户名和密码而不将它们散列到 https 服务器,我在POST请求中发送给嗅探包并找出密码的人的密码有多暴露?服务器已启用 https。
这样做的正确方法是什么?
如果服务器启用了 HTTPS,那么任何通过网络传输的数据都将被加密。对于纯网络攻击者来说,即使是通过 HTTPS 嗅探明文密码,也很难在任何一方注意到的情况下进行嗅探。
HTTPS 在传输层上使用 SSL/TLS,旨在提供加密和身份验证。作为其握手的一部分,SSL/TLS 协议协商一个对称加密密钥,该密钥对于每个会话都不同,并与强大的算法一起使用来保护线路上的数据。
为了减轻“中间人”攻击,客户端和服务器用于建立共享加密密钥的非对称密钥也由证书颁发机构进行加密签名,以提供信任保证并防止修改证书. 只要可以信任证书颁发机构,就很容易检查证书本身的签名和服务器名称。所有现代浏览器都会自动执行此操作,并在证书有任何问题时向用户发出警告。
只要您和您的用户了解有关正确使用 SSL 的问题(例如,确保您的私钥安全,并确保您的用户注意浏览器警告),就可以通过 SSL 连接发送明文密码。
如果您的应用程序要求您甚至无法做到这一点,您可能会考虑 X.509 身份验证(在客户端和服务器端使用证书)或 Kerberos 身份验证(不通过线路发送密码)。但是,对于一个基本的 Web 应用程序,这两种解决方案都是多余的。