Deno 运行环境有哪些安全性方面需要注意的问题?

介绍

Deno 是一个基于 V8 引擎的新型 JavaScript 运行环境。它由 Node.js 的创始人发起,旨在提供更好的安全性和开发体验。Deno 运行时使用 Rust 编写,在实现安全性方面的功能上做了很多工作。

在这篇文章中,我们将探讨 Deno 运行环境的安全性问题,以及如何借助其安全特性确保代码不会被攻击者利用,同时还会探讨其中的一些陷阱和注意事项。

安全特性

默认不允许访问本地文件系统

Deno 运行环境默认不允许访问本地文件系统,因此,尝试访问系统中的任何文件或目录时,都会引发一个权限错误。只有当我们使用 --allow-read 或者 --allow-write 标记启动运行程序时,Deno 才会允许我们访问本地文件系统。

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

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

默认不允许访问网络

Deno 运行环境默认不允许访问网络。只有在使用 --allow-net 标记启动程序时,Deno 才会允许访问 URL,发送 HTTP 请求,和创建 WebSocket 连接。

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

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

默认不允许访问环境变量

Deno 运行环境默认不允许访问环境变量,不支持从环境变量中读取敏感信息。只有在使用 --allow-env 标记启动程序时,Deno 才会允许访问环境变量。

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

沙箱机制

Deno 运行环境使用沙箱机制保护代码免受恶意代码的攻击,因此 JavaScript 代码是无法访问系统级资源的。Deno 运行时会在运行代码前自动分配一个权限范围,只有在严格的限制范围内才能运行代码。在运行代码后,Deno 会根据代码的行为来自动增加或减少其权限范围。

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

内置 TypeScript 支持

Deno 支持 TypeScript,它内置了 TypeScript 编译器。在执行 JavaScript 代码之前,Deno 会先将 TypeScript 代码编译成纯 JavaScript 代码,从而避免了代码中的一些问题,比如类型错误等。

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

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

注意事项

必须授予所有需要的权限

Deno 运行时默认禁止访问系统资源和外部服务,只有在明确授权的情况下才能使用它们。因此,我们必须使用 --allow-* 标记明确授权访问所需的权限,否则程序将无法访问系统资源和外部服务。

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

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

跟踪依赖项

Deno 会自动跟踪程序的依赖项,以确保它们不会被恶意代码污染。但是,我们也必须自己审核代码或第三方依赖的代码,以确保它们不会包含任何漏洞或招致攻击。

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

验证远程代码

我们应该尽量使用 HTTPS 方式获取依赖项,以确保它们没有被恶意代码污染。并且我们应该尽可能验证远程代码的完整性和真实性,以避免执行被篡改的代码。

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

结论

Deno 是一个新的运行时环境,它致力于提供更好的安全性和开发体验。通过默认禁止访问本地文件系统、网络和环境变量,使用沙箱机制,内置 TypeScript 支持等功能,我们可以确保代码的安全性,避免使用在现有的 JavaScript 应用程序中的一些安全陷阱和漏洞。

我们必须谨慎使用 Deno 的程序,并遵循最佳实践规则,在代码的开发和测试过程中仔细审查程序和第三方依赖项,以确保代码的安全性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670dc9715f551281025e65e6