1
shakespark 2020-05-16 18:13:15 +08:00
这是把防火墙的功能挪到程序里了,那么请问,有几个用户能这么折腾的
|
2
finely 2020-05-16 18:16:14 +08:00
先用着 node,等 deno 生态圈完善了再入坑
|
3
tyrealgray 2020-05-16 18:17:36 +08:00 via Android
让 deno 跑一个 subprocess,这种情况下 deno 也无能为力
|
4
crella 2020-05-16 18:18:43 +08:00 via Android
chrome 浏览器内核的沙箱做得再好,还是有漏洞。
所以这个事有 deno 来做能做得有 chrome 的沙箱好吗? |
5
WittBulter 2020-05-16 18:29:37 +08:00 2
这看起来很美好,但实际并不怎么样。
- 对于一个大的应用、脚本来说,你没有办法识别它要求的权限是否合理,这就像现在的安卓。 - 现在看来 `allow-run` 已经是特权了: 即便你只给一个 allow-run 然后用 Deno 启动一个子进程,在子进程中用 shell 去访问文件系统不受权限限制,也能访问网络。 - 如果你运行一个 deno 程序,大多数情况下你会安慰自己这很安全。... |
6
secondwtq 2020-05-16 18:34:08 +08:00
这种 dssq 的事情从来就是,要不你就做得不够好,要么做的好了却没人用
不过起码 Deno 把问题提出来了 http://joeduffyblog.com/2015/11/10/objects-as-secure-capabilities |
7
cmdOptionKana OP @shakespark 世界上有一部分人不想折腾,但同时也有一部分人注重安全和隐私,这个功能对于后者来说非常有用,实际使用起来也不麻烦。
|
8
lee015 2020-05-16 18:35:29 +08:00 via Android 1
嗯权限控制的很细,但敌不过流氓软件不给权限退出不让用
|
9
cmdOptionKana OP @WittBulter deno 这个权限管理有一个非常好的地方:可以指定具体的域名和文件夹!
比如访问外网,程序作者可以主动提供一个域名列表,使用者只要简单浏览一下这个列表就能放心了。 在访问本地文件夹方面,以后如果可以改进为指定“不可访问”的文件夹,就很方便保护系统和隐私了。 |
10
cmdOptionKana OP @lee015 注意这个激动人心的特点:权限可以给,给的是非常具体的权限,具体到文件夹和域名。而不是一律允许联网或一律禁止联网。
|
11
cmdOptionKana OP |
12
reus 2020-05-16 18:58:13 +08:00 via Android
开容器跑不就行了,少见多怪
|
13
autoxbc 2020-05-16 19:57:59 +08:00 2
如果 A 程序引入了 B,C,D,E 模块,这些模块每个只需要一个权限,那么运行 A 就要同时给出 4 个权限,同时,B,C,D,E 每个模块也同时获得了额外的提权
这就是我担心的权限传染,即:既然 Deno 没有任何包管理机制,那么怎么精细管理 ECMAScript 里不存在的"权限"这一概念 |
14
cmdOptionKana OP |
15
oxogenesis 2020-05-16 20:25:36 +08:00
能审查代码的项目,如果用户量够大,就不用怕,会有很多人来审查,出问题的可能性较小
当然大量公司的产品都不开源,还不得不用,这些程序才是个体需要警惕的 =============================================== 个体公告号:o22Zhy8MzQYemARcftajENtfikjbhTNiqg |
17
miao666 2020-05-16 22:13:06 +08:00 via Android
读写硬盘和访问网络是基本权利,如果这俩都没有,应用也基本没啥实际用处吧
|
18
cmdOptionKana OP @miao666 我要哭了,我上面已经重复说了很多次…… 不仅可以赋予访问权限,而且可以精确到域名和文件夹。
比如,可以设定一个程序只能访问一个指定的 data 文件夹,同时设定它只能写入一个叫 temp 的文件夹。 有不少程序根本没必要访问网络,就可以彻底断掉它的联网权限。就算需要联网,在很多情况下域名范围都可以限定,这样也可以放心它不会连到奇怪的网址上去(比如不用担心被第三方植入偷取隐私的后门) |
19
yimity 2020-05-16 22:56:51 +08:00
其实如果我要你的信息,我干嘛不用 Java go c++ C# ....... 来开发?
如果我不要你的信息,嗯... 为了让你放心,我用了个 deno 。 如果你爱用不用,嗯.... 我干嘛不用 Java go c++ C# ....... 来开发? |
20
liuxey 2020-05-16 23:18:28 +08:00
安全确实是 deno 的一个卖点,但离完善还有很长的路要走,且看发展吧
|
21
murmur 2020-05-16 23:24:33 +08:00
于是你就看到遍地都是
deno 怎么访问磁盘 deno 怎么访问网络 deno http 404 |
22
cmdOptionKana OP @murmur 低级问题永远有人问,就算把工具做到超级简单易用,也防不住有人问低级问题。
|
23
cmdOptionKana OP @yimity 你说这个倒是真的,最现实的一个例子就是,桌面网页版的网站不利于收集用户数据、打广告,于是现在都在把用户往 app 上赶。
这就是你说的,如果一种技术能保护用户,那我就用别的技术,把用户赶过去。 |
24
mara1 2020-05-16 23:54:56 +08:00
问下啊,前几天访问 deno 官网,读了篇介绍,末尾有个赞助,100 美元一件的衣服,我很少见官网上放赞助的,还是 100 美元,常见一些个人博客放些,赞助几块钱喝咖啡的。请问这是怎么个意思,如果入不敷出了,是不是后期就没人维护了
|
25
hronro 2020-05-17 00:02:37 +08:00 1
你们都搞错了吧,这个功能不是面向普通用户的,而是面向程序员的,为了防止 NPM package 里面被植入恶意代码之类(之前 NPM 有过盗取比特币的前例)的。
|
26
cmdOptionKana OP @mara1 表面上看,deno 暂时是靠爱发电,没有工资没有收入,估计广告、赞助啥的也几乎等于零。至于背后有没有财主支持,那就不知道了。
长远来看,主要还是看能不能得到业界认可,有没有人去用。只要用的人多了,必然有人接手维护,大企业不差这个钱,只要是有热度的东西就有价值,总有企业去接手的。 如果撑一两年都没有发展,那就凉凉了,也许有人继续半死不活地维护等待复活,也许直接停滞,这种情况并不少见,很多以前曾经火过的语言、框架现在都沉寂了。 |
27
newtype0092 2020-05-17 00:37:31 +08:00
如果需要动态域名怎么办?比如请求一个白名单内的域名获取一个资源文件列表,但资源文件不确定在哪个域名下,这时候是不是白名单就没用了?
|
28
janxin 2020-05-17 09:14:54 +08:00
用户使用教程:
请打开 XXX 权限,XXX 权限,否则程序无法正常使用! 用户: 我叼,怎么这破程序无法正常使用! |
29
cmdOptionKana OP |
30
jinliming2 2020-05-17 11:00:36 +08:00 via iPhone
我是觉得权限限制会有用,但也仅限安全意识比较高的用户。
对于绝大多数用户来说,限制了网络权限,那么 --allow-net 参数就会成为标配,进而转变成在启动程序的时候,不管有没有网络需求都加上 --allow-net,甚至于 --allow-net 干啥用的都不知道,只知道不加这个参数可能会报错…… 比如,对于很多程序员来说,sudo 就是各种命令的标准前缀了……都不知道 sudo 是支持详细配置权限控制的,直接默认配置就是给个 ALL……程序没起来,先不看错误提示,反手加一个 sudo 再试试,还是不行的话才将错误信息复制到 baidu 搜一下具体原因,然后可能由于 sudo 执行了一下产生了一个 root 用户所有的临时文件,导致后续所有解决问题的命令都加上了 sudo…… |
31
namelosw 2020-05-17 11:02:35 +08:00
Deno 挺好的。启动很快,Node + TypeScript 平时用起来得搞一堆 transpile,启动慢成狗,本地开发和发布区别还很大,每次写都很麻烦。生态起来了就肯定有很多人用。
所以有事没事搬运一些 npm 包过去。既加速了生态建设,又赚了 Github 星星,何乐而不为呢? |
32
namelosw 2020-05-17 11:08:31 +08:00
楼上都多虑了,权限的问题,比如要网没网的时候启动 Deno 会提示。感觉跟 iOS,Android 之类 App 要权限差不多。
再说,即使用户搞不清 sudo 是干嘛的,也不应该把 sudo 这个功能删了吧…… |
33
cmdOptionKana OP @namelosw 据说他们还打算用 rust 来处理 typescript (未查证),到时还能更快。
|
34
jjx 2020-05-17 11:12:25 +08:00
deno 是个怪胎
很奇妙的将 go 的一些思路, rust 做扩展 typescript 做主要语言 给整在一起了 |
35
fakeshadow 2020-05-17 11:24:11 +08:00
然后翻了一下,你要用的脚本 /库 /程序还没人用 deno 写。
|
36
ericgui 2020-05-17 11:35:56 +08:00
deno 的包管理会是一个超级大坑
|
37
liudengchn 2020-05-17 11:47:46 +08:00
不让读写硬盘。。你用它作甚
|
38
ipixeloldc 2020-05-17 11:49:32 +08:00 1
@cmdOptionKana https://github.com/swc-project/swc
rust 是有相关项目的,并且作者最后确实也谈了,希望 ts 的处理必须重写( https://deno.land/v1#tsc-bottleneck ) |
39
ipixeloldc 2020-05-17 11:53:00 +08:00
@ipixeloldc 希望那个词,删掉,打时脑抽了。。。
|
40
cmdOptionKana OP @ipixeloldc 原来是真的,这个作者真的太有魄力了,到时重写后又是一个诱人的优点,typescript 算是真正成为服务器正规军的一员,希望微软能有所表示(按照最近微软对开源界的态度来看,可以乐观预测会有所支持)。
|
41
namelosw 2020-05-17 11:59:35 +08:00
@jjx 那不是挺好嘛…… Go 的 std,Rust 的底层,TypeScript 的表现力,把强项都捏在一起了。
不然想象一下 Rust 的 std,TypeScript 底层,Go 的表现力捏在一起是怎样一番景象…… |
42
namelosw 2020-05-17 12:02:54 +08:00
@cmdOptionKana 不过 TSC 真的太难写了。现在 TypeScript 已经是小半个 Dependent type 语言了,现在 type operator 非常碎片化,而且每天都在加功能。主流语言除了 Scala,没有比它类型系统更复杂的了,这俩哪个更复杂还很难说……
|
43
cmdOptionKana OP @namelosw 这个确实,微软那帮人疯起来实在可怕,新特性疯狂地加,那么拼干嘛……
|
44
darknoll 2020-05-17 12:37:54 +08:00 via Android
不看好
|
45
namelosw 2020-05-17 12:55:53 +08:00 3
@cmdOptionKana 因为 type operator 这种东西是个潘多拉魔盒,一旦跨越了泛型,追求更高级的类型系统,就要加无数 type operator,加了一个就会发现你需要更多的 type operator,最后还是有 cover 不了的 case 。直到把 type system 变成一个真正的编程语言,或者跟本语言合体,签名和非签名代码可以互相混用。
TS 的类型系统不像普通的 Hindley-Milner,简单优雅地实现泛型,大部分情况都能推导就结束了。 首先要兼容 JS,type 已有语言用 Hindley-Miller 这种系统肯定就不行。历史包袱很多。 然后 type 一个没 type 过的语言,要 annotate 已有的库就非常困难,比如 JS 里完全就可以写出来如果入参是奇数,返回值就是 File,偶数返回值就是 Function 这些行为。所以要加 operator 尽量 cover 这些 case 。 这个趋势的终点就是语言和类型系统完全融合,成为一个完全的 dependent type 语言,效果就是能自己写一个 type safe 的 printf ( parse 第一个参数,字符串里面有几个%s%d 之类的来决定后面的参数类型,我理解主流语言还没有能做到的),或者一个 SQL 或者 GraphQL 查过去,不依赖 codegen 就能做到强类型(也不依赖 F#的那种 type provider )。 但是里这个距离应该还有很远,估计最后还是要有新语言或者重写来解决。不过让所有人能认识到这种需求是存在的是件好事,不要在泛型上继续内卷……就跟 Java 1.5 之前很多人认识不到泛型有用一样。 对这个话题感兴趣可以搜索一下 Lambda cube 这个概念。 |
46
sorke 2020-05-17 12:57:55 +08:00
权限的授权终端还是用户, 作为一个小白用户(比如我的父母)才不懂权限是什么, 只要不烦他就好了, 他们连看一下提示的想法都没有. 搞得这么麻烦实用性就差了, 说到底还是市场的选择
|
47
lxml 2020-05-17 13:06:38 +08:00 via Android
为啥大家老在纠结权限不会用问题,这玩意根本就不是给正常用户用的,面向的是程序员程序员!提什么父母不会用,不给权限就退出是想什么呢???好歹了解下这个东西是干嘛好不好。
|
48
hareandlion 2020-05-17 13:15:54 +08:00
看了入门教程,编译,自带 format 。。。有种 golang 的熟悉感
|
49
masker 2020-05-17 13:37:14 +08:00 via Android
JavaScript 天下第一! deno 天下第一!(,吹爆,高潮了
|
50
charlie21 2020-05-17 16:13:30 +08:00
闭源怕怕求开源
开源怕怕求 deno 如果 deno 出现一个 0Day 漏洞就好玩了 |
51
vtychx 2020-05-17 16:49:40 +08:00
1.0 版本都还没出吧,等等党永不为奴
这个权限管理是仿照安卓么,需要事先声明 |
52
charlie21 2020-05-17 16:52:40 +08:00
权限这个事,这也算个事阿?
哪里下载的脚本,伤害不伤害本机,都随缘的 诶你别看 deno 脚本号称怎么样,好像不给权限了就没事了,这就是你运行来路不明的脚本的理由吗?哦 是 缘,妙不可言 各种来路不明的脚本,就说是 deno 写的,你就敢运行了是吧? 缘,妙不可言 |
53
autoxbc 2020-05-17 17:04:44 +08:00
@ipixeloldc #38 swc 暂时还没法用,一些基础的转码都是错的
|
54
me876 2020-05-18 09:12:28 +08:00
死在 deno 安装第一步,brew install deno 失败.....
|
55
1244943563 2020-05-18 10:59:52 +08:00
deno 刚出来你用了多久就开始这么吹?`就完全没有这些担心,deno 的安全性很高,很实用!`,实践了吗,还是就看了个 demo 就激动睡不着了。JS 社区真能折腾,搞得人都想转后端
|
56
RockShake 2020-05-19 09:27:33 +08:00
你怎么知道你 import 的 URL 没有被劫持呢
|
57
cmdOptionKana OP @RockShake deno 的 import 语句是长这样子的:
import { serve } from "https://deno.land/[email protected]/http/server.ts"; 可见,它是用 https 来防止劫持。 |
58
jipf9046522 2020-12-04 15:58:39 +08:00
deno 凉了吧...
|
59
cmdOptionKana OP @jipf9046522 没有凉,但我的兴趣已经转移到 F# 😂
|