欢迎来到 Snyk 的 JavaScript 框架状态安全报 告2019。
在此报告中,我们调查了 Angular 和 React 生态系统的安全状态。在这份报告种我们根本没有将它们作为竞争性框架进行比较。相反,我们把它们作为可行的构建 JavaScript 项目的前端生态系统的替代方案进行了审查,同时重点关注了每种方案的安全风险和最佳实践,以及它们之间的差异。
我们强烈建议下载完整报告的电子版 ,但还提供了以下内容作为博客文章:
- JavaScript 框架安全性状态报告 2019(本文)
- Angular vs React: Security Bakeoff 2019
- 2019 Angular 和 React 安全漏洞的分析与比较
- Angular vs React:间接依赖的安全风险
- React 和 Angular 安全编码实践比较
- 84% 的网站受 jQuery XSS 漏洞的影响
该报告涵盖:
- Angular 和 React 核心项目的安全实践
- 在对每个生态系统中漏洞的深入研究的基础上,得出的 Angular 和 React 模块生态系统的安全状态
- 其他常见 JavaScript 前端框架替代方案(例如 Vue.js,Bootstrap 和 jQuery)的安全性实践
- 不同替代方案之间,尤其是 Angular 和 React 之间的重大安全性差异
JavaScript 框架安全性报告 2019 中的关键要点
以下是我们报告的主要内容:
- Angular vs. React 核心项目安全
- Angular 在其原有的 AngularJS 项目(Angular v1.x)中存在 23 个安全漏洞。
- 在 Angular 核心框架组件中未发现任何安全漏洞。
- React 有一些安全漏洞;似乎经常会有漏洞在其核心库中被发现,并每两年披露一次。
- 只有一个 React 核心项目漏洞分配了官方 CVE。 CVE 根本没有列出任何关于 Angular 的漏洞报告。总之,这些都证明开源社区需要利用漏洞数据库,以便发现相关的安全问题。
- Snyk 报告了 Angular 和 React 核心项目中的 26 个安全漏洞,其报告没有关于对 npm 的审核。
- Angular vs. React模块生态系统安全性
- React 和 Angular 模块生态系统在广受欢迎的前端库组件中都显示存在安全漏洞,这些前端组件的下载次数高达数百万,其中有些到目前为止尚无安全修复。
- 我们目睹了恶意模块影响了 Angular 和 React 生态系统,并试图收集前端 Web 程序中使用的信用卡、密码和其他敏感信息。
- Next.js 框架通过在项目的整个生命周期内迅速解决所有的五个漏洞,并在一周之内提供了修复程序,从而表现出对安全性的巨大责任。
有关 CVE 和安全漏洞的信息
为了调查本报告中所涉及的每个生态系统的总体安全状况,我们讨论的因素包括在不同相关软件包中确定的安全漏洞。并根据已知漏洞的情况(有时与已知漏洞进行比较)来审查和讨论这些漏洞。
在 CVE 编号颁发机构(CNA)维护的常见漏洞和披露(CVE)列表中,为已知漏洞分配了标识号,并为 CVE 标注了 CVSS 分数,以此来说明对所列漏洞的严重程度。了解关于如何通过 CVSS 对漏洞的严重程度进行评分的信息 。
- Angular vs. React 安全态势
- Angular 有可见且可实现的安全性准则、沟通方式和负责的披露政策,这是 React 项目中所没有的。
- Angular 有更广泛的内置支持,可用于不同上下文中的数据清理和输出编码,例如 HTML 锚点(或链接)元素中的 URL 属性等。
- React 没有内置的数据清理控件,而是在大多数默认情况下对输出进行编码,并将其留给开发人员来处理未处理的情况,例如 ref 和 URL 属性(后者在 React v16.9.0 中已解决)。
- Angular 在其 HTTP 服务中通过内置的安全机制提供了对跨站请求伪造(CSRF)漏洞的支持。而 React 开发人员需要独立解决这些问题。
- 前端生态系统安全性
- 在过去的 12 个月中,jQuery 有超过 1.2 亿次的下载,并且根据 W3Techs 的统计,在所有使用 jQuery 的网站中,有 84% 的网站使用 jQuery v1.x,有四个非常严重的 XSS 漏洞影响了它。实际上,如果你没有使用jQuery v3.4.0 或更高版本(对于大多数 jQuery 用户来说都是如此),则说明你用的是包含安全漏洞的版本。
- 在过去的 12 个月中,Bootstrap 已被下载 79,185,409 次,而其中共包含 7 个跨站点脚本(XSS)漏洞。其中三个已在 2019 年披露。值得注意的社区模块,例如 bootstrap-markdown 在同一时间段内下载量超过300,000,尽管它没有安全性修复或升级其 XSS 漏洞的路径。 bootstrap-select 有超过 200 万次下载,并具有着严重的 XSS 漏洞,Snyk 研究团队借助其专有的威胁情报系统发现了该漏洞。
- 在过去的 12 个月中,Vue.js 框架的下载次数已超过 4000 万次,Vue.js 内核总共存在四个漏洞 ,不过已经被修复。
可以继续阅读 Angular vs React: Security Bakeoff 2019 或者 下载完整报告 .。
该报告回顾了每个框架的整体安全性、由社区推动的模块生态系统以及与之相关的安全风险;基于这些观点,该报告通过重点介绍该领域所采用的最佳安全实践来确保安全的代码,最终为 Angular 和 React 用户提供了可行的安全建议。