美文网首页
2.5 Deno权限

2.5 Deno权限

作者: 9e8aeff1c70c | 来源:发表于2021-04-29 21:42 被阅读0次

    默认情况下,Deno是安全的。因此,除非您专门启用它,否则deno模块不能访问文件,网络或环境。要访问安全敏感的区域或功能,需要使用在命令行授予deno进程的权限。

    对于以下示例,mod.ts已被授予对文件系统的只读访问权限。它无法对其进行写入或执行任何其他对安全性敏感的功能。

    deno run --allow-read mod.ts
    

    权限清单

    可以使用以下权限:

    • -A,-- allow -all允许所有权限。这将禁用所有安全性。
    • --allow-env允许环境访问,例如获取和设置环境变量。
    • --allow-hrtime允许高分辨率时间测量。高分辨率时间可用于定时攻击和指纹识别。
    • --allow-net = <允许网络>允许网络访问。您可以指定一个可选的,用逗号分隔的域列表,以提供允许域的允许列表。
    • --allow-plugin允许加载插件。请注意--allow-plugin是一个不稳定的功能。
    • --allow-read = <允许读取>允许文件系统读取访问。您可以指定目录或文件的可选逗号分隔列表,以提供允许的文件系统访问的允许列表。
    • --allow-run允许运行子进程。请注意,子流程未在沙箱中运行,因此与deno流程没有相同的安全限制。因此,请谨慎使用。
    • --allow-write = <允许写>允许文件系统写访问。您可以指定目录或文件的可选逗号分隔列表,以提供允许的文件系统访问的允许列表。

    权限允许列表

    Deno还允许您使用允许列表来控制某些权限的粒度。

    此示例通过仅允许列出/usr 目录来限制文件系统访问,但是由于进程尝试访问/etc目录中的文件,因此执行失败:

    $ deno run --allow-read=/usr https://deno.land/std@0.95.0/examples/cat.ts /etc/passwderror: Uncaught PermissionDenied: read access to "/etc/passwd", run again with the --allow-read flag► $deno$/dispatch_json.ts:40:11    at DenoError ($deno$/errors.ts:20:5)    ...
    

    通过允许列表,以正确的权限再次尝试/etc

    deno run --allow-read=/etc https://deno.land/std@0.95.0/examples/cat.ts /etc/passwd
    

    --allow-write的工作原理与相同--allow-read

    网络访问:

    fetch.ts

    const result = await fetch("https://deno.land/");
    

    这是一个如何允许列出主机/ URL的示例:

    deno run --allow-net=github.com,deno.land fetch.ts
    

    如果fetch.ts尝试建立与任何其他域的网络连接,则该过程将失败。

    允许对任何主机/ URL的网络呼叫:

    deno run --allow-net fetch.ts
    

    会议

    瑞安·达尔(Ryan Dahl)。(2020年9月25日)。 Deno安全模型。Speakeasy JS。

    相关文章

      网友评论

          本文标题:2.5 Deno权限

          本文链接:https://www.haomeiwen.com/subject/guxjrltx.html