随着前端技术的不断发展,Deno 作为一款全新的 JavaScript 运行时环境,正逐渐流行于前端领域。然而,与此同时,我们也应该意识到 Deno 在安全方面面临着很多挑战,比如代码注入、恶意攻击等。因此,我们需要采取一些最佳实践来保护我们的应用程序。下面将同时介绍8个最佳实践。
1. 精简依赖关系
由于 Deno 表示在文件中引入依赖性的方式是通过 URL,因此依赖关系的数量和版本号就变得尤为重要,因为它们直接影响应用程序的安全性。因此,在引入依赖项时,请确保仅引入必要的依赖项,升级依赖项以确保其与应用程序的其余部分兼容,以及仅使用经过权威验证的“最小安全 URL”。
import validate from "https://deno.land/x/validator/mod.ts"; // 更好的方式是使它更加具体,像下面这样 import validate from "https://deno.land/x/validator@v0.2.3/mod.ts";
2. 使用沙盒沙箱
沙盒沙箱是一种运行程序的逻辑的安全机制,可以将其限制在被隔离的环境中。使用 Deno 的沙盒沙箱功能,我们可以将我们的应用程序限制在沙盒框中,以保护我们的计算机和应用程序不被恶意软件和攻击程序所感染。
-- -------------------- ---- ------- ------ - ---- - ---- ------- -- ----- ----- - - ---------- ---- -------- ------ -------- ------- -------- ------- -------- --- ----- - ---- - - ----- ----------- ----- --------- - ----- ----------- ----- -------- - ----- ----------------- ----------展开代码
3. 限制访问权限
Deno 的默认安全机制中,文件系统访问必须显式获得授权。也就是说,它默认情况下,访问整个文件系统被禁止,这也是为什么 Deno 能够在访问文件系统时功能如此有用,同时又能够保证安全性。
const fs = Deno.readFile;
它将抛出拒绝访问错误,因为我们未明确授权文件系统访问。如果与访问文件相关的命令请求授权,则该命令将暂停,需要用户显式批准获取授权后,后续命令才能运行。
4. 避免使用 --allow-all 标志
虽然允许对所有资源的访问看起来非常方便,但在生产环境中,总是应该尽量避免使用 --allow-all 标志来启动 Deno 程序。相反,您应该按照最小权限原则,只授予您的应用程序访问应该访问的资源。
// 允许文件系统的读权限 deno run --allow-read main.ts // 允许网络访问 deno run --allow-net main.ts // 利用 --unstable 标志来允许某些不稳定的功能 deno run --unstable ./main.ts
5. 禁止使用 eval 函数
由于 eval 函数的执行过程需要和未知代码进行交互,因此,它经常被用于攻击代码执行恶意代码。在 Deno 中,它默认禁止使用 eval 函数,因此,我们也应该在应用程序中尽可能避免使用这个函数。
// 禁止使用 eval 函数 "use strict"; // 避免以下的方法 eval("console.log('Some code');")
6. 开启严格模式
在 Deno 中,通过设置"use strict",我们可以在程序中启用严格模式,该模式增强了 JavaScript 的安全性和可靠性。在严格模式中,我们需要在声明变量之前定义变量,防止在应用程序中意外使用未定义的变量。
// 开启严格模式 'use strict';
7. 检查用户输入
在处理用户输入时,我们应该十分注意。用户输入数据的不正确处理会导致代码注入和其他安全漏洞,在 Deno 中,可以通过检查用户输入数据是否有效来提高应用程序的安全性。
-- -------------------- ---- ------- -- -------- -------- -------------------- -------- ------- - ----- ----- - --------------------- ------ ------------------ - ----- -------- - -------- ----- ----- - ------------------------ --------- - --------------------- -- -------- - ---- - --------------------- -- ---------- -展开代码
8. 使用 HTTPS 协议
HTTPS 是一个安全的网络协议,可以提供加密和身份验证的安全机制。在 Deno 应用程序中,尽可能使用 HTTPS 协议来访问外部资源,以降低受到中间人攻击的风险。
// 使用 https 协议请求数据 const response = await fetch("https://example.com/data"); const data = await response.json();
总之,对于 Deno 应用程序,安全性非常重要。通过实践上述最佳实践,可以提高应用程序的安全性,减少安全漏洞的风险,并使其更加可靠。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67bd58f3a231b2b7edfa9608