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