我目前正在使用不允许 https 连接的免费主机,并且由于我的网站不托管任何敏感或私人内容,因此我不会升级到付费托管。但是由于我的站点确实处理密码,并且由于许多用户对不同的站点使用相同的密码,所以我想在处理这些密码时设置合理的安全/加密量。
来自Secure login: public key encryption in PHP and Javascript,看起来在通过网络发送密码时使用公共/私人加密来保护密码的最大问题是攻击者可以修改发送给客户端的公钥,然后截取加密后的密码,用攻击者的私钥解密,然后用站点的公钥加密,然后发送到站点,本质上一开始就破解了加密的全部意义。
当然,任何加密都比没有加密好,但我想尽我所能,而不必购买支持 HTTPS 的主机,这让我想到了我的问题。
是否有任何可靠的方法来防止(或只是检测并提醒用户)中间人替换他们自己的公钥来代替我网站的公钥?或者有什么方法可以验证服务器发送的公钥是否真的是服务器的公钥?如果无法验证这一点,SSL/TLS 是如何工作的,以及它们如何验证密钥(如果 SSL 不使用公钥/私钥,我很抱歉,我对它的理解非常有限)?
我已经明白,与使用 TLS/SSL 相比,仅加密表单数据是一种极其薄弱的做法,并且不会阻止那些决心破坏加密的人这样做,所以请避免任何“你应该使用 HTTPS”-只有评论(如果你知道一个允许 HTTPS 的免费托管服务提供商,我也会很高兴听到他们的消息)