- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
令我震惊的是,最近我发现,直到那时我一直认为确保用户完整性的安全选择的SSL / TLS协议实际上存在多个漏洞,并且存在可用的漏洞利用程序(CAs in 2009,renegotiation exploit in 2009和< aa>)。因此,似乎还存在其他几个较小的漏洞。
因此,最大的问题仍然是,该怎么办?据我了解,我上面链接的最后两个漏洞利用需要大量先前已知的信息,然后需要进行一些猜测(BEAST)或只能部分利用我的“安全”连接,因为它实际上无法解密发送的数据(重新协商) 。但是,这些方法似乎仍然非常非常具有威胁性,而且我怀疑,将黑客添加到他们的武器库中还需要很长时间。
作为一个明显的对策,我想到了在我处理的Web应用程序的其他敏感部分添加Java加密的附加层。我知道那里有一些好的加密库,因此加密本身不是问题。但是,问题是我也阅读了BEAST in 2011,并且对该方法的批评使我想知道使用Javascript的附加安全性是否可能/合理。
问题是,我认为Javascript加密无论如何都能使事情变得更安全,因为至少我链接的最后两个是中间人攻击,因此,额外的加密可能会破坏他们的攻击(而我不会完全不了解SSL / TLS协议)。
您是否认为使用Javascript添加额外的加密(到受保护的受控环境)可以消除这些威胁?
编辑:
我认为到目前为止的3个答案对我有些误解了。我非常清楚,完全破坏的SSL / TLS连接会使任何进一步的Javascript加密都无用(正如您所指出的那样-Javascript本身将受到损害并且可能会被更改)。但是,据我所知,我所提到的漏洞利用方法都没有允许攻击者立即完全破坏连接,尤其是重新协商漏洞利用。问题更多的是,是否有谁对SSL / TLS了如指掌,并且对Java脚本的加密难度很高,是否可以就Java加密是否可以抵御这两个特定漏洞的问题有所了解?
不过,我要得出的结论是,它不会增加安全性。如果有的话,因为我怀疑Java脚本本身是一种能够正确进行加密(在阅读this fine article about Javascript as a cryptographic security measure之后)的语言,主要是因为它缺乏安全的随机数生成器。然后在答案中写出的所有其他很好的理由使棺材最终钉在了这个想法上。
最佳答案
在考虑由于据说SSL / TLS已被破坏而使用JavaScript添加额外的加密层之前,您应该真正了解您提到的关于SSL / TLS的问题实际上是什么。普通出版物(您已发布的链接)中发布的信息可能是简化,误导或耸人听闻的。
证书问题
虽然这很重要,但它本身并不是SSL / TLS的漏洞。无论您设计什么新系统,都必须依靠基础架构来识别远程方。有许多用于此的模型(基于公共密钥密码学),主要是PKI(la X.509,请参见RFC 5280)和信任网络(la PGP)。
这些问题分为以下几类:
未正确检查已颁发证书的主机名(例如\0
会传递给另一台主机):这是一个实现错误。令人遗憾的是,漏洞是定期实现的,有时确实是在与安全性相关的代码中实现的。 SSL / TLS的设计不在这里。主机名验证的实现是。 (有关HTTPS或RFC 2818 section 3.1,请参见RFC 6125。)这可以通过修复库/浏览器中的错误并升级到固定版本来解决。任何协议(无论是否使用SSL / TLS)都会偶尔出现未能正确执行规范的情况。 (当然,制作X.509证书的ASN.1结构的“声明”无济于事...)
主机名可能无法在浏览器中清楚显示。 GUI是可以改进的领域,但是似乎也很难相应地教育用户。例如,已经尝试推动使用扩展验证证书(绿色条形),但这可能还会造成一些额外的混乱(并非没有从那些从EV证书中受益最大的人进行明智的营销)。
CA有时会在颁发证书时出错(或被泄露)。也许这些CA证书不应该首先放在您的浏览器中。
这些问题在这里并不是纯粹的技术问题。作为一个人,这更多地是关于如何检查您是否希望信任摆在您面前的信息(即您是否相信证书是真实的,以及您想与之交谈的服务器的信息)。
我相信这个问题没有完美的解决方案。信任是很难建模的东西。这种情况可能在任何情况下都发生,不一定与SSL / TLS或Internet相关。 (您看过您朋友的几本护照,以检查他们的名字?他们都是真实的吗?您确定吗?
在当局提供了一些虚假信息后还没有发布?)
这些实现可能并不完美,浏览器开发人员可以修复错误并改善GUI。但是,我认为没有JavaScript插件可以解决任何问题:您仍然需要类似的方法来识别远程方。有一些浏览器插件可以部分帮助您(例如,通过与证书的其他缓存副本进行比较),但是最终,选择是否信任服务器的身份是用户的责任。
(这样做的另一个缺点是,某些开发人员似乎不想过多地了解该领域:请参阅SO上的问题数量,询问如何禁用证书验证以摆脱警告消息。这也是一个人为问题,如果人们不想看到警告消息。)
重新协商利用(CVE-2009-3555)和BEAST
重新协商利用确实是一个协议错误,但这已在RFC 5746中修复。 (当时有人争辩说,它并不是纯粹的SSL / TLS错误,但它也是SSL / TLS与它所保护的应用程序协议交互方式的一个问题。如果HTTP栈已经能够收到SSL / TLS重新协商的通知,但这是一个灰色区域,并且HTTP服务器并不是真的为此设计的:太晚和/或太大的任务。)与修复有关的问题有与部署有关。同时升级每个人非常困难。鼓励人们升级到TLS的新版本(实际上是沟渠SSL)会有所帮助。
BEAST是一个问题(特定于浏览器),但是可以通过更好地配置SSL / TLS堆栈或再次升级到最新版本的SSL / TLS来解决。
在这里,似乎SSL / TLS是版本升级时停滞的受害者。当然,这比其他软件要麻烦得多,因为远程用户(可能是您从未遇到过的在线客户)也常常也必须升级其SSL / TLS版本。
我要说的是,尽管重要的是(通常出于商业目的)不排除许多无法或不会更新其浏览器/操作系统的用户,但有时服务器还是需要进行升级。
同样,不幸的是,这并非特定于SSL / TLS。任何需要支持IE6的Web开发都会遇到类似的问题(和it should be killed off...)。
再次,我非常怀疑基于JavaScript的解决方案不会遭受类似的问题(特别是浏览器兼容性和版本问题)。
关于javascript - 可以使用Javascript反击SSL/TLS漏洞吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8795830/
我在 Cloudflare 的域名服务器上有一个域名 example.com。该域指向我的专用服务器的 IP 地址,该服务器运行 CentOS/WHM/cPanel。该站点可访问 - 一切都很好。 我
我正在努力将 SSL 支持添加到我们现有的应用程序中,并已开始考虑向后兼容性。 与我读过的其他帖子不同的一个特殊情况是服务器可能不一定使用 SSL 代码更新。所以我将有一个 SSL 客户端连接到一个对
我有几个 https://*.rest-service.mydomain.com。随着服务数量的增加,我觉得管理 SSL 证书的成本很高。我为 *.mydomain.com 购买了通配符证书。 新添加
我的客户要求我在他的网站上做反向 ssl。但我是这个学期的新手。谁能帮我解决这个问题。 请描述或引用如何做。 最佳答案 查看 this wiki article . In the case of se
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 去年关闭。 Improve this
我连接到我的网络服务器上的存储库,但是当我尝试推送我的更改时,它显示:“错误 403:需要 ssl”,但在我的存储库设置中我已经激活了 ssl 选项。 有什么建议吗? 最佳答案 当您连接到存储库时,您
抱歉,如果这听起来像是转储问题,我已经阅读了很多关于 SSL 握手和 SSL 工作原理的文章和文档。我对一件事感到困惑,如果有人能澄清我就太好了。 我知道私钥要保密。但是我已经看到通过在请求中指定私钥
随着物联网越来越主流,越来越需要从硬件发送http请求。 一个主要问题是硬件微 Controller 无法发送 ssl 请求,但大多数服务器/网站/服务都在使用 ssl。 所以,问题是,有没有桥(一个
我有一个 ssl 页面,它还从非 ssl 站点下载头像。我能做些什么来隔离该内容,以便浏览器不会警告用户混合内容吗? 最佳答案 只是一个想法 - 或者: 尝试在头像网站上使用 ssl url,如有必要
我在 Digital Ocean droplet(使用 nginx)上设置了两个域。我已经在其中一个(domain1)中安装了一个 SSL 证书,并且那个证书一切正常。第二个域 (domain2) 不
我收到这个错误: Error frontend: 502 Bad gateway 99.110.244:443 2017/09/28 13:03:51 [error] 34080#34080: *10
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 6 年前。 Improve
我遇到了一个问题,我正在构建一个 nginx 反向代理以定向到不同 url 路径上的多个微服务。 该系统完全基于 docker,因此开发和生产使用相同的环境。这在安装 SSL 时给我带来了问题,因为
所以我知道要求 SSL 证书和接受之间的根本区别,一个意味着您必须拥有 SSL 证书,另一个意味着您不需要。 在某个网页的 IIS 管理器中,我有以下设置: 我遇到的问题是,当我设置需要 SSL 证书
我今天才发现 .app 域名需要 SSL 证书。我购买它是为了将 DNS 重定向到已经设置了 SSL 证书的站点,所以我的问题是是否可以设置它? 我正在使用 Google Domains,在将合成临时
堆栈 : react ,NGINX 1.14.0,GUnicorn,Django 2.2.8,Python 3.6.9 错误 : 在浏览器:当 React 调用 Django API(当然是在请求头中
假设我在计算机上编辑主机文件以使 google.com 指向我的 VPS 服务器 IP,并且服务器具有通过 Apache 或 Nginx 配置的 google.com 的虚拟主机/服务器 block
我有一个场景,我正在处理用于 URL 路由的 IIS 网站配置。我已添加网站并在服务器上导入所需的证书。 我的情况是(我有多个网站 URL 和两个 SSL 证书 - 如下所示): qatest1.ab
我知道服务器发送的证书无法伪造(仍然存在 MD5 冲突,但成本高昂),但是伪造客户端又如何呢?在中间人攻击中:我们不能告诉服务器我们是合法客户端并从该服务器获取数据并对其进行操作,然后使用合法客户端公
我已通读相关问题,但无法完全找到我要查找的内容。我设置了一个名为“domain.com”的域,并创建了两个子域“client.domain.com”和“client-intern.domain.com
我是一名优秀的程序员,十分优秀!