我不是在谈论服务器端安全,甚至不是 XSS 漏洞,因为这些是对易受攻击的服务的攻击,并且不会使用客户端上任何预先存在的漏洞来影响最终用户。只要 Web 开发人员继续制作易受攻击的 Web 应用程序,它们就会存在。
我想在这两种不同的场景中关注最终用户的安全性:
- 已安装并启用 Flash,但禁用了 JavaScript
- 启用 JavaScript,未安装或启用 Flash
我对提出一种需要比较两种几乎完全不同(内部)但又相互竞争的技术(在最终用户安全性方面)的问题可能得到的答案很感兴趣。
我不是在谈论服务器端安全,甚至不是 XSS 漏洞,因为这些是对易受攻击的服务的攻击,并且不会使用客户端上任何预先存在的漏洞来影响最终用户。只要 Web 开发人员继续制作易受攻击的 Web 应用程序,它们就会存在。
我想在这两种不同的场景中关注最终用户的安全性:
我对提出一种需要比较两种几乎完全不同(内部)但又相互竞争的技术(在最终用户安全性方面)的问题可能得到的答案很感兴趣。
从理论上讲,如果所有服务器和与它们的连接都完全安全(不可能)且值得信赖(不正确),那么任何一个都不会比另一个更“安全”——主要是因为网站的开发人员完全可以控制网站的内容。由于 Flash 和 JS 提供给客户端,因此服务器必须向最终用户提供恶意内容,以使最终用户受到影响。
遗憾的是,我们并不生活在一个完美的世界中,并且 JS 在服务器受损的情况下往往更安全——它影响客户端的能力要有限得多。许多 Flash 漏洞具有执行任意代码的能力,这比浏览器漏洞更具破坏性,浏览器漏洞通常需要多个漏洞才能突破沙箱。这意味着 JS 漏洞通常只能在客户端查看该页面时操纵客户端,并且通常在页面关闭后无法持续存在,而 Flash 漏洞可以用 RAT 或其他恶意软件感染客户端,从而使攻击者能够控制即使在浏览器关闭后客户端。
使用 JS 的另一个好处是客户端可以查看源代码。使用该站点的人可能会注意到源中的可疑内容并通知开发人员,从而更容易检测到入侵。在 Flash 的情况下,恶意攻击者可以将恶意代码注入现有的 swf,并且由于用户在不分解 swf 的情况下无法查看源代码,因此恶意代码可能会在更长时间内未被检测到。
对于最终用户,场景 2:
启用 JavaScript,未安装或启用 Flash
鉴于上述原因并考虑到 Adobe Flash 的漏洞利用历史,它会更安全。在 NVD 中搜索一共发现了610 个漏洞,其中 330 个在 2014 年 1 月至 2015 年 12 月之间。大多数与 JS 相关的漏洞利用往往是特定于浏览器的,这减少了受影响的客户端数量,而 Flash 旨在跨平台,这增加了受影响客户的数量(考虑到很多人禁用了 Flash,现在更少了)。
TLDR:关闭 Flash 并改用 JS。
除了 WillS 的出色回答之外,还有一些影响安全性的差异:
更新Flash 的另外两个问题:
从“可以从您的浏览器运行 xx 使您的机器崩溃或危及您的安全”的角度来看,答案是明确的 - flash 是一项古老的技术,不再得到很好的支持,并且具有悠久的漏洞利用历史。因此,它具有潜在的危险性是众所周知的。
至于 html5、javascript 和其他当前流行的技术,它们本质上并不安全——它们在您的机器上运行第三方编写的代码。有人试图限制他们可以做的事情,但有效性取决于实现的质量以及底层设计。剥削是不可避免的。