gpt4 book ai didi

php - 使用 Javascript/PHP 验证公钥

转载 作者:行者123 更新时间:2023-11-28 09:45:53 25 4
gpt4 key购买 nike

我目前使用的是不允许 https 连接的免费主机,并且由于我的网站不托管任何敏感或私有(private)内容,因此我不会升级到付费托管。但由于我的网站确实处理密码,并且由于许多用户对不同的网站使用相同的密码,因此我想在处理这些密码时采取合理的安全/加密措施。

来自Secure login: public key encryption in PHP and Javascript ,看起来在通过网络发送密码时使用公共(public)/私有(private)加密来保护它的最大问题是攻击者可以修改发送到客户端的公钥,然后拦截加密的密码,用攻击者的私钥,然后使用站点的公钥对其进行加密,然后将其发送到站点,从本质上讲,首先就破坏了对其进行加密的全部意义。

当然,任何加密都比不加密好,但我想尽我所能,而无需购买支持 HTTPS 的托管,这让我想到了我的问题。

是否有任何可靠的方法来防止(或只是检测并提醒用户)中间人用自己的公钥替换我网站的公钥?或者有什么方法可以验证服务器发送的公钥真的是服务器的公钥吗?如果无法验证这一点,那么 SSL/TLS 是如何工作的,以及它们如何验证 key (很抱歉,如果 SSL 不使用公钥/私钥,我对它的了解非常有限)?

我已经了解到,与使用 TLS/SSL 相比,仅加密表单数据是一种极其薄弱的做法,并且不会阻止那些决心破解加密的人这样做,因此请不要使用任何“您应该使用仅 HTTPS” 的评论(不过,如果您知道允许 HTTPS 的免费托管提供商,我也很高兴听到它们)

最佳答案

SSL 起作用的原因是根证书在浏览器内分发。这个方案有很多问题,但总的来说,你有一个信任链——在这种情况下,以浏览器上的信任结束(证书存储、分发、安装等)。当任何证书颁发机构私钥不安全时,它就会崩溃,这目前是一个备受争议的问题。

信任链:

enter image description here

浏览器证书存储:

enter image description here

JavaScript 的问题是您没有(访问)信任存储区,因此您无法信任您收到的 key 。攻击者可以简单地用自己的 key 替换它(并使用他的 key 登录到您自己的站点)。这将构成典型的中间人攻击,而你对此无能为力。

使用公钥加密确实可以为您提供一些针对窃听攻击的保护。不幸的是,大多数首先能够访问连接的攻击都可能能够创建 MITM,例如使用 WiFi 接入点时。

尝试找到您的浏览器信任存储区,您可能可以查看其中分发的已配置根证书。这种证书和私钥的树形结构称为公钥基础设施(Google 一下)。

关于php - 使用 Javascript/PHP 验证公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11785142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com