Deno 權(quán)限

2020-06-24 17:04 更新

權(quán)限

默認(rèn)情況下,Deno是安全的。因此 Deno 模塊沒有文件、網(wǎng)絡(luò)或環(huán)境的訪問權(quán)限,除非您為它授權(quán)。在命令行參數(shù)中為 deno 進(jìn)程授權(quán)后才能訪問安全敏感的功能。 在以下示例中,mod.ts 只被授予文件系統(tǒng)的只讀權(quán)限。它無法對其進(jìn)行寫入,或執(zhí)行任何其他對安全性敏感的操作。 deno run --allow-read mod.ts

權(quán)限列表

以下權(quán)限是可用的: -A, --allow-all 允許所有權(quán)限,這將禁用所有安全限制。 --allow-env 允許環(huán)境訪問,例如讀取和設(shè)置環(huán)境變量。 --allow-hrtime 允許高精度時間測量,高精度時間能夠在計時攻擊和特征識別中使用。 --allow-net=<allow-net> 允許網(wǎng)絡(luò)訪問。您可以指定一系列用逗號分隔的域名,來提供域名白名單。 --allow-plugin 允許加載插件。請注意:這是一個不穩(wěn)定功能。 --allow-read=<allow-read> 允許讀取文件系統(tǒng)。您可以指定一系列用逗號分隔的目錄或文件,來提供文件系統(tǒng)白名單。 --allow-run 允許運(yùn)行子進(jìn)程。請注意,子進(jìn)程不在沙箱中運(yùn)行,因此沒有與 deno 進(jìn)程相同的安全限制,請謹(jǐn)慎使用。 --allow-write=<allow-write> 允許寫入文件系統(tǒng)。您可以指定一系列用逗號分隔的目錄或文件,來提供文件系統(tǒng)白名單。

權(quán)限白名單

Deno 還允許您使用白名單控制權(quán)限的粒度。 這是一個用白名單限制文件系統(tǒng)訪問權(quán)限的示例,僅允許訪問 /usr 目錄,但它會在嘗試訪問 /etc 目錄時失敗。

$ deno run --allow-read=/usr https://deno.land/std/examples/cat.ts /etc/passwd
error: 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目錄,賦予正確的權(quán)限,再試一次: deno run --allow-read=/etc https://deno.land/std/examples/cat.ts /etc/passwd --allow-write也一樣,代表寫入權(quán)限。

網(wǎng)絡(luò)訪問

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

這是一個設(shè)置 host 或 url 白名單的示例:

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

如果 fetch.ts 嘗試與其他域名建立網(wǎng)絡(luò)連接,那么這個進(jìn)程將會失敗。 允許訪問任意地址:

deno run --allow-net fetch.ts
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號