2.5 Deno權(quán)限

默認(rèn)情況下,Deno是安全的。因此,除非您專(zhuān)門(mén)啟用它,否則deno模塊不能訪(fǎng)問(wèn)文件,網(wǎng)絡(luò)或環(huán)境。要訪(fǎng)問(wèn)安全敏感的區(qū)域或功能,需要使用在命令行授予deno進(jìn)程的權(quán)限。

對(duì)于以下示例,mod.ts已被授予對(duì)文件系統(tǒng)的只讀訪(fǎng)問(wèn)權(quán)限。它無(wú)法對(duì)其進(jìn)行寫(xiě)入或執(zhí)行任何其他對(duì)安全性敏感的功能。

deno run --allow-read mod.ts

權(quán)限清單

可以使用以下權(quán)限:

  • -A,-- allow -all允許所有權(quán)限。這將禁用所有安全性。
  • --allow-env允許環(huán)境訪(fǎng)問(wèn),例如獲取和設(shè)置環(huán)境變量。
  • --allow-hrtime允許高分辨率時(shí)間測(cè)量。高分辨率時(shí)間可用于定時(shí)攻擊和指紋識(shí)別。
  • --allow-net = <允許網(wǎng)絡(luò)>允許網(wǎng)絡(luò)訪(fǎng)問(wèn)。您可以指定一個(gè)可選的,用逗號(hào)分隔的域列表,以提供允許域的允許列表。
  • --allow-plugin允許加載插件。請(qǐng)注意--allow-plugin是一個(gè)不穩(wěn)定的功能。
  • --allow-read = <允許讀取>允許文件系統(tǒng)讀取訪(fǎng)問(wèn)。您可以指定目錄或文件的可選逗號(hào)分隔列表,以提供允許的文件系統(tǒng)訪(fǎng)問(wèn)的允許列表。
  • --allow-run允許運(yùn)行子進(jìn)程。請(qǐng)注意,子流程未在沙箱中運(yùn)行,因此與deno流程沒(méi)有相同的安全限制。因此,請(qǐng)謹(jǐn)慎使用。
  • --allow-write = <允許寫(xiě)>允許文件系統(tǒng)寫(xiě)訪(fǎng)問(wèn)。您可以指定目錄或文件的可選逗號(hào)分隔列表,以提供允許的文件系統(tǒng)訪(fǎng)問(wèn)的允許列表。

權(quán)限允許列表

Deno還允許您使用允許列表來(lái)控制某些權(quán)限的粒度。

此示例通過(guò)僅允許列出/usr 目錄來(lái)限制文件系統(tǒng)訪(fǎng)問(wèn),但是由于進(jìn)程嘗試訪(fǎng)問(wèn)/etc目錄中的文件,因此執(zhí)行失敗:

$ 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)    ...

通過(guò)允許列表,以正確的權(quán)限再次嘗試/etc

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

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

網(wǎng)絡(luò)訪(fǎng)問(wèn):

fetch.ts

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

這是一個(gè)如何允許列出主機(jī)/ URL的示例:

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

如果fetch.ts嘗試建立與任何其他域的網(wǎng)絡(luò)連接,則該過(guò)程將失敗。

允許對(duì)任何主機(jī)/ URL的網(wǎng)絡(luò)呼叫:

deno run --allow-net fetch.ts

會(huì)議

瑞安·達(dá)爾(Ryan Dahl)。(2020年9月25日)。 Deno安全模型。Speakeasy JS。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 命令行界面 Deno是一個(gè)命令行程序。到目前為止,您應(yīng)該已經(jīng)熟悉了一些簡(jiǎn)單的命令,并且已經(jīng)了解了Shell使用的基...
    9e8aeff1c70c閱讀 726評(píng)論 0 1
  • 第一步 此頁(yè)面包含一些示例,以教您有關(guān)Deno的基礎(chǔ)知識(shí)。 本文檔假定您具有JavaScript的某些先決知識(shí),尤...
    9e8aeff1c70c閱讀 357評(píng)論 0 1
  • 要高效地使用Deno,您應(yīng)該設(shè)置您的環(huán)境。這意味著設(shè)置shell自動(dòng)完成,環(huán)境變量以及您選擇的編輯器或IDE。 [...
    9e8aeff1c70c閱讀 1,029評(píng)論 0 1
  • 前不久在組里分享了deno的背景和一些新特性,今天來(lái)簡(jiǎn)單的做個(gè)總結(jié)。 什么是deno 如官方所介紹的:deno是用...
    簡(jiǎn)心豆閱讀 752評(píng)論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂(lè)有人憂(yōu)愁,有人驚喜有人失落,有的覺(jué)得收獲滿(mǎn)滿(mǎn)有...
    陌忘宇閱讀 8,830評(píng)論 28 54

友情鏈接更多精彩內(nèi)容