请原谅我再水一贴 deno,因为实在太激动了

2020-05-16 17:40:00 +08:00
 cmdOptionKana
一般来说,运行一个别人写的脚本(或程序、软件),通常会担心它会不会向外发送本机的隐私,会不会读取我的个人文件,会不会删除我的文件……

但如果这是一个 deno 脚本(程序),就完全没有这些担心,deno 的安全性很高,很实用!

deno 默认不允许对硬盘进行读写,不允许网络访问。

只有在运行的时候明确指定权限,才有访问权限,而且,可以指定具体的域名,指定具体的文件夹目录!

简单来说,如果我运行一个 C/C++或 Go 等各种语言编写的程序,我要么相信它的来源是干净的,要么自己花大量时间精力去审查代码、自己编译,要么就要承受风险(比如它可能隐藏了勒索病毒、可能悄悄挖矿)。

但如果我运行一个 deno 程序,大多数情况下我都可以非常放心。
9186 次点击
所在节点    JavaScript
59 条回复
shakespark
2020-05-16 18:13:15 +08:00
这是把防火墙的功能挪到程序里了,那么请问,有几个用户能这么折腾的
finely
2020-05-16 18:16:14 +08:00
先用着 node,等 deno 生态圈完善了再入坑
tyrealgray
2020-05-16 18:17:36 +08:00
让 deno 跑一个 subprocess,这种情况下 deno 也无能为力
crella
2020-05-16 18:18:43 +08:00
chrome 浏览器内核的沙箱做得再好,还是有漏洞。

所以这个事有 deno 来做能做得有 chrome 的沙箱好吗?
WittBulter
2020-05-16 18:29:37 +08:00
这看起来很美好,但实际并不怎么样。

- 对于一个大的应用、脚本来说,你没有办法识别它要求的权限是否合理,这就像现在的安卓。
- 现在看来 `allow-run` 已经是特权了: 即便你只给一个 allow-run 然后用 Deno 启动一个子进程,在子进程中用 shell 去访问文件系统不受权限限制,也能访问网络。
- 如果你运行一个 deno 程序,大多数情况下你会安慰自己这很安全。...
secondwtq
2020-05-16 18:34:08 +08:00
这种 dssq 的事情从来就是,要不你就做得不够好,要么做的好了却没人用
不过起码 Deno 把问题提出来了

http://joeduffyblog.com/2015/11/10/objects-as-secure-capabilities
cmdOptionKana
2020-05-16 18:35:09 +08:00
@shakespark 世界上有一部分人不想折腾,但同时也有一部分人注重安全和隐私,这个功能对于后者来说非常有用,实际使用起来也不麻烦。
lee015
2020-05-16 18:35:29 +08:00
嗯权限控制的很细,但敌不过流氓软件不给权限退出不让用
cmdOptionKana
2020-05-16 18:39:55 +08:00
@WittBulter deno 这个权限管理有一个非常好的地方:可以指定具体的域名和文件夹!

比如访问外网,程序作者可以主动提供一个域名列表,使用者只要简单浏览一下这个列表就能放心了。

在访问本地文件夹方面,以后如果可以改进为指定“不可访问”的文件夹,就很方便保护系统和隐私了。
cmdOptionKana
2020-05-16 18:41:25 +08:00
@lee015 注意这个激动人心的特点:权限可以给,给的是非常具体的权限,具体到文件夹和域名。而不是一律允许联网或一律禁止联网。
cmdOptionKana
2020-05-16 18:42:55 +08:00
@tyrealgray
@crella
@secondwtq 不完美,至少开了个好头,后续如果 deno 发展得好,会有大厂或大牛贡献,会越来越完善的。总不能破罐子破摔的心态吧……
reus
2020-05-16 18:58:13 +08:00
开容器跑不就行了,少见多怪
autoxbc
2020-05-16 19:57:59 +08:00
如果 A 程序引入了 B,C,D,E 模块,这些模块每个只需要一个权限,那么运行 A 就要同时给出 4 个权限,同时,B,C,D,E 每个模块也同时获得了额外的提权

这就是我担心的权限传染,即:既然 Deno 没有任何包管理机制,那么怎么精细管理 ECMAScript 里不存在的"权限"这一概念
cmdOptionKana
2020-05-16 20:18:09 +08:00
@autoxbc 模块不管权限的。

权限由执行程序的人来控制,执行 deno run 的时候用参数来设定权限。
oxogenesis
2020-05-16 20:25:36 +08:00
能审查代码的项目,如果用户量够大,就不用怕,会有很多人来审查,出问题的可能性较小
当然大量公司的产品都不开源,还不得不用,这些程序才是个体需要警惕的
===============================================
个体公告号:o22Zhy8MzQYemARcftajENtfikjbhTNiqg
johnnyNg
2020-05-16 22:10:26 +08:00
@autoxbc 好像是这么回事儿
miao666
2020-05-16 22:13:06 +08:00
读写硬盘和访问网络是基本权利,如果这俩都没有,应用也基本没啥实际用处吧
cmdOptionKana
2020-05-16 22:19:06 +08:00
@miao666 我要哭了,我上面已经重复说了很多次…… 不仅可以赋予访问权限,而且可以精确到域名和文件夹。

比如,可以设定一个程序只能访问一个指定的 data 文件夹,同时设定它只能写入一个叫 temp 的文件夹。

有不少程序根本没必要访问网络,就可以彻底断掉它的联网权限。就算需要联网,在很多情况下域名范围都可以限定,这样也可以放心它不会连到奇怪的网址上去(比如不用担心被第三方植入偷取隐私的后门)
yimity
2020-05-16 22:56:51 +08:00
其实如果我要你的信息,我干嘛不用 Java go c++ C# ....... 来开发?
如果我不要你的信息,嗯... 为了让你放心,我用了个 deno 。
如果你爱用不用,嗯.... 我干嘛不用 Java go c++ C# ....... 来开发?
liuxey
2020-05-16 23:18:28 +08:00
安全确实是 deno 的一个卖点,但离完善还有很长的路要走,且看发展吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/672381

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX