介绍
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