Deno 中如何安全地使用 npm 模块

阅读时长 4 分钟读完

背景

Deno 是 Ryan Dahl(Node.js 的创始人)推出的一种基于 V8 引擎的 JavaScript 与 TypeScript 运行时环境,其设计目标是提供更加安全、更加现代化的运行环境,同时也有更好的开发体验。相比 Node.js,Deno 带来了:

  • 原生支持 TypeScript
  • 安全性更高的模块系统
  • 零配置文件监控和代码格式化
  • 更好的标准库和工具支持等

因此,兴趣日益增长的 Deno 社区中,如何安全地使用 npm 模块已成为人们关注的一个问题。事实上,Deno 使用的是类似浏览器环境的模块系统,而浏览器中我们已经知道了如何避免 XSS、CSRF 等攻击,这些经验可以帮助我们解决 Deno 中使用 npm 模块的安全问题。

本文将详细介绍如何安全地在 Deno 中使用 npm 模块,我们会涉及到主要的安全问题、如何使用安全的技巧以及最后推荐一些优秀的 npm 模块供大家使用。

安全问题

Deno 的模块引入机制与 Node.js 不同,它并没有提供类似 Node.js 中的 require() 函数,而是通过 ES6 的 import 语句来实现模块引入,例如:

但在 Deno 中使用 npm 模块存在以下安全问题:

1. 大量模块攻击

由于 npm 的开源性和生态的庞大,很难完全保证每个模块的质量和安全性。如果引入了未知的模块,且该模块有恶意代码,极有可能会带来方方面面的安全风险。

2. 模块篡改攻击

如果攻击者成功攻击了 npm 的服务器或者中间节点,就有机会对公共的 npm 模块进行篡改。这意味着在对应版本的模块上的任何运行,都会执行攻击者篡改的代码。

3. 依赖关系攻击

一个 npm 模块很可能会依赖另一个 npm 模块,这就形成了依赖关系链。如果某个被依赖的模块出现了安全问题,那么所有依赖它的模块都面临被攻击的风险。

安全使用技巧

1. 使用确定的版本

为了解决模块篡改的攻击,我们需要使用确定的版本。如果不确定模块版本,就会面临模块篡改的风险。在 Deno 中,可以在 import 语句中指定模块版本,例如:

2. 使用信任的源

当前 Deno 官方并没有提供 npm 模块的包管理工具,但 Deno 支持从任意源中获取模块。因此当我们引入模块时,要确保源的可信度,尽可能选取一些相对可信的源,例如官方的 Deno 库、官方的 GitHub 组织等。

3. 将模块缓存到本地

为了避免大量模块攻击,可以将模块缓存到本地,这样可以减少对第三方的依赖。在 Deno 中,可以使用 --cached-only 来指定只使用缓存中的模块,例如:

4. 安装本地的 npm 模块

为了进一步增强安全性,我们可以将依赖的 npm 模块安装到本地,并从本地引入。这样不仅可以避免大量模块攻击和模块篡改攻击,还可以方便做离线开发。

示例代码

-- -------------------- ---- -------
-- -- --- ------ -----------------
------ - ------------ - ---- -----------------------------------------

-- -- --- ------ ------------------
------ - ------ - ---- ------------------------------------------------

-- -- ---- -------- ------------------------- --
------ ---- ---- ------------------------------------

-- -- ------- -------- ------------------------ --
------ ------- ---- ----------------------------------

-- ------------- ---------------- ---

推荐模块

使用安全的 npm 模块非常重要,以下是一些优秀的、安全性高的 npm 模块:

  • CryptoJS:一个加密算法的库
  • Lodash:一个 JavaScript 工具库,提供了很多常用的函数
  • Axios:一个基于 Promise 的 HTTP 请求库,可以用在浏览器和 Node.js 中
  • Mocha:一个 JavaScript 测试框架,常用于 Node.js 和浏览器端

总结

上文介绍了如何安全地在 Deno 中使用 npm 模块,包括安全问题和安全使用技巧,并给出了示例代码和推荐模块。在开发过程中,我们应该关注模块的安全性,使用确定的版本,并确保源的可信度,同时可以将模块缓存到本地或者安装本地的 npm 模块。通过这些技巧,我们可以让我们的 Deno 应用程序变得更加安全,更加可靠。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ec0d11f6b2d6eab3658f79

纠错
反馈