Saturday, July 10, 2021

V2EX - 技术

V2EX - 技术


后续: ToDesk 存在安全漏洞,可无密码远程控制设备,请谨慎使用

Posted: 10 Jul 2021 05:03 AM PDT

原帖地址: https://v2ex.com/t/788413

通过论坛和 ToDesk 团队负责人取得联系后,我们进行了深度测试和本地验证,发现的确是一次乌龙事件。具体事实如下:

  • ToDesk 使用 chacha20 and Poly 1305 端到端加密,不存在无密码就可以连接的情况
  • ToDesk 连接设备时,会优先查找保存的历史连接记录
  • ToDesk 早期版本的"记住历史连接密码"密码是默认勾选的
  • ToDesk 新版本去掉了这个默认选项
  • ToDesk 新版本无法在 UI 下拉菜单列表中显示老版本的数据库连接记录

本次产生乌龙的原因是:我使用了 ToDesk 旧版本(默认配置),在升级新版本后,软件 UI 并没有把老版本的连接记录显示在下拉菜单中,因此产生了误会。

有熟悉 webpack 的大神么?求思路

Posted: 10 Jul 2021 05:01 AM PDT

背景:有个网站项目,其中有些文档内容,以 md 形式放在固定一个文件夹内。

现在希望每次网站构建的时候,能自动扫描文件夹内的文件,根据文件名及内容来生成一个目录索引,比如:

const articleList = [   {     filename: 'xxxx',     title: 'xxxx',     content: 'xxxx',   }, ] 

项目是用的 umi 框架,使用 webpack 5 来打包的。

目前初步想法是通过给 webpack 写 loader 或者 plugin 的方式来实现。

但是没研究清楚具体该用 loader 还是 plugin,如果用 plugin 的话,该在哪里做 hook ?生成的内容最好是仅存在于构建阶段或者结果中。

求大神指点。

开发一个 B/S 项目,若要弄成前后端分离分离的话,前端用什么支撑?

Posted: 10 Jul 2021 04:56 AM PDT

一个人开发一个 B/S 项目,若前后端分离分离的话,前端用什么支撑?

简单一点静态资源服务器:apache 、aginx ?( aginx 的语法感觉有点难以理解)

动态复杂一点:node.js 、C#+Blazor ?

js 和 c#我接触过(用 js 写浏览器程序,用 C#的 wpf 前端写 c/s 程序),但没有做过它们的作为服务端应用的开发,如果选这两个,那么选谁好呢

你们前端服务器用什么?

这个错误的正则最早是哪儿流传出来的呢?

Posted: 10 Jul 2021 04:37 AM PDT

$pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png]))[\'|\"].*?[\/]?>/";

↑↑ 用来匹配内容中的图片,但是 [img|IMG] 匹配到的是 i 或 I 。。

$pattern = '/<img[^>]*src="([^"]+)"[^>]*>/i';

↑↑ 如果数据中用了单引号,,那是数据的错误 →_→

安卓现在有什么简单不用 Root 的方法可以挂载 NFS 吗?

Posted: 10 Jul 2021 03:13 AM PDT

用 x/net/webdav 包,访问目录显示不全问题

Posted: 10 Jul 2021 03:11 AM PDT

比如访问 C 盘的时候,仅显示了几个文件夹,并且会提示以下内容:

http: superfluous response.WriteHeader call from golang.org/x/net/webdav.(*Handler).ServeHTTP (webdav.go:74)

实际错误应该是

open C:\Config.Msi: Access is denied

但是指定某个目录,并且不存在拒绝访问的文件的时候,可以完整显示目录。

有遇到同样问题的小伙伴吗,这个该怎么解决?

群晖 7.0 ,局域网拷贝 速度上不去 平均 25M 左右 怎么回事,,

Posted: 10 Jul 2021 02:49 AM PDT

PC 主机磁盘文件拷贝到群晖 NAS DS220+ , 速度上不去 ,查看群晖资源管理器 资源占用也是很低 CPU 百分之 13 内存 30% 左右。

node 怎么实现 工作队列?

Posted: 10 Jul 2021 02:39 AM PDT

用 nodejs 简单的搭建了一个 http sever,可以处理 post 请求,执行比如"job1(post)","job2(post)"这样的请求,但是这些不同的 job 只能同步执行,也就是一个执行完了再执行另一个。

所以有没有简单的实现,先把 post 请求存到队列里面,然后依次执行?

Dive into Feign!

Posted: 09 Jul 2021 10:04 PM PDT

Feign 是⼀个 HTTP 请求的轻量级客户端框架。以 Java 接口注解的方式调用 HTTP 请求,服务消费方拿到服务提供方的接⼝,然后像调⽤本地接⼝⽅法⼀样去调⽤,实际发出的是远程的请求,被⼴泛应⽤在 Spring Cloud 的解决⽅案中,是基于 Spring Cloud 的微服务中不可或缺的重要组件。使用 Feign 只要写个接口,然后啪一下就调通了,很快啊!

Dive into Feign

挖坟: TrueCrypt 当年在用户手册里特意说明自己拒绝支持 TPM,以及 RMS 对“可信计算”的声讨

Posted: 09 Jul 2021 09:52 PM PDT

最近因为 Win11 强制要求,TPM 火了一把,于是 LZ 也有点想蹭蹭热度……

稍微翻了一下英文维基,里面居然提到 TrueCrypt 当年在用户手册里专门解答过为啥有意不支持 TPM,理由大致就是:
TPM 在安全上其实是多余的,反倒是给用户带来了虚假的安全感。支持 TPM 的加密软件宣称的那些攻击场景,也就是攻击者有管理员权限甚至可以物理接触设备,实际上用任何技术手段都已经无法继续维持安全性了,这个时候 TPM 其实已经靠不住了,唯一靠得住的做法就是停止使用那台设备。比如,攻击者可以装一个硬件键盘窃听器("假键盘"?);可以从内存里直接把密钥 dump 出来(硬的应该就是"冷启动攻击",软的应该就是利用调试 /IPC 之类的系统调用读取进程内存?);可以在加密卷处于解锁状态的时候直接把数据读出来(毕竟是透明加解密的),然后上传,或者就是保存在本地的一个不加密的卷里面……

我看貌似(至少在很多年前)很多人还觉得 BitLocker 和 TPM 是密不可分的,甚至觉得没有 TPM 的话 BitLocker 的安全性就"降了一大截"……( /t/122436

据 LZ 所知,其实 BitLocker 本来也并不是离了 TPM 就不能用。

所以,LZ 个人的认知或者观点(就 BitLocker 而言,其他的我不太了解):
与其说是安全,TPM 更大程度上是提供了方便,免去输入一长串复杂密码的麻烦;但与此同时 TPM 有点手机刷机锁那味儿,需要度量 BIOS 和 bootloader 的哈希值,于是主板挂了 /引导挂了也会连带导致无法解密(默认是只能靠数字密码,也就是"恢复密钥"),所以要说蛋疼其实也蛮蛋疼的,一不小心就 footgun 了。

(或者……从 PIN 可以用很短的、更容易记忆的数字、而且更容易定期更换,超长的数字密码"恢复密钥"则是塞进保险柜这个角度讲,有个 TPM 确实是可以提高安全性的?)

至于 TrueCrypt 的观点,我感觉……貌似 BitLocker 也没有说物理或系统安全守不住的情况下还可以依赖 TPM ?比如电脑被偷走了,干脆就不在用户手里了,想继续用也用不了了啊(笑)。(不过我印象里 TPM 的安全芯片貌似还是爆过漏洞的,可以把里面固化的私钥提取出来,也许这个威胁确实挺大吧,但好像也并不是每一款安全芯片都可能被破解?)

总之我个人还是倾向于(用 BitLocker 时)不用 TPM 。


另外维基百科里还提到了 TPM 可能反过来威胁用户的自由和隐私……
看了一下好像引用的是 RMS 向"可信计算"开炮的文章,然而通篇读完我好像也没看到哪里有提到隐私方面的威胁,好像只是批评"可信计算",说"可信计算"这个名字起的就很有误导性,实际上"可信计算"会让用户手里的设备不听他的指挥,所以应该叫做"背叛计算"还差不多……甚至把"可信计算"类比成 1984 。

现在更新版本网页上的这篇文章,到了结尾,反倒是还特意点了一下,说 TPM 实质上已经没剩下多少实际能产生(有害)影响的东西了,所以它的威胁警报已经基本解除了……

反正我怎么看都没看出来英文维基里说的什么 TPM/可信计算可以隐秘地跟踪监视用户的行为并记录在案什么的,可能是楼主我实在是过于火星了吧……
(要说文中有批评隐私泄露,貌似也明确说了是在可信计算之前,是"孤立事件",然后在此基础上批评"可信计算让这些孤立性的侵害变成了系统性的")

腾讯轻量应用服务器 ifconfig 没有公网 IP

Posted: 09 Jul 2021 06:56 PM PDT

小弟以学生优惠购入一台腾讯轻量应用服务器,目前正在学习 Linux C++开发,今天在学习 socket 编程,代码也是很简单的代码:

#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <signal.h> #include <unistd.h> #include <stdlib.h> #include <assert.h> #include <stdio.h> #include <string.h>  static bool stop = false;  static void handle_term(int sig) {     stop = true; }  int main(int argc, char *argv[]) {     signal(SIGTERM, handle_term);      if (argc <= 3)     {         printf("usage: %s ip_address port_number backlog\n", basename(argv[0]));         return 1;     }      const char *ip = argv[1];     int port = atoi(argv[2]);     int backlog = atoi(argv[3]);      int sock = socket(AF_INET, SOCK_STREAM, 0);     assert(sock >= 0);      struct sockaddr_in address;     bzero(&address, sizeof(address));     address.sin_family = AF_INET;     inet_pton(AF_INET, ip, &address.sin_addr);     address.sin_port = htons(port);      int ret = bind(sock, (struct sockaddr *)&address, sizeof(address));     assert(ret != -1);      ret = listen(sock, backlog);     assert(ret != -1);      while (!stop)     {         sleep(1);     }      close(sock);     return 0; } 

g++ -o main main.cpp后,终端运行./main 公网 IP 12345 5 ,然后就在bind后面 assert 退出了,bind 失败。确定代码没问题,我直接把可执行文件传到 Digitalocean 的机器上,运行程序,成功。

纳闷了,然后两台机器 ifconfig,DO 的机器出现了公网 IP,腾讯的没出现公网 IP,只有内网的 IP 和 localhost,我就在腾讯上 ./main 内网 IP 12345 5,能运行!,DO 上 telnet 腾讯的公网 IP,成功?!!!

还有这种操作?我在内网 IP 上 bind,结果给我"映射"到公网 IP 上了,这是咋做到的,为啥不让我 bind 公网的 IP 嘞

数据库内数据太多,查询条件太多该如何优化

Posted: 09 Jul 2021 06:23 PM PDT

数据库:mysql


数据预计可达到3 亿条数据,15 个字段,但是需要 9 个字段作为可选参数做查询。 因为字段都是可选的,不知道索引如何加。还要根据创建时间逆序排序分页

不加索引使用数据库全表扫描硬抗估计不行,除了走 ES 外,是否有其他更好的方案。


难点就在于查询字段都是可选的,无法创建合适的索引,无法做合适的分表方案。


搞个 myisan 从库,不加索引,不知是否可行?


😔😔

Windows hello 会破坏 yubikey u2f/fido2 的正确运行

Posted: 09 Jul 2021 03:43 PM PDT

TL;DR

Windows hello 本身就是一个 FIDO2 密钥,并且优先级高于外接 yubikey. 注册 key 的时候很容易就把 windows hello 注册进去了。

怎么发现的

在 namecheap 上注册 yubikey, 发现注册 key 和使用的过程都莫名其妙。注册 key 和后面的每次登录到要我输入 windows hello PIN 码,而不需要去 touch yubikey.

直到,我试了一下拔掉 yubikey 还能不能登录。发现真的可以。

解释

在带 TPM 的电脑上,windows hello 本身就是一个 FIDO2 authenticator. 也就是说,windows 电脑本身就可以作为一个 key 来使用。

并且,这个 TPM 模拟的 key 的优先级,是高于外接的 yubikey 的。如果按照默认的注册 key 流程走下去,就算插这个 yubikey, 也会把 TPM 模拟的 key 注册上去。

问题出在哪里

注册 key 过程中的文案根本不知道在说什么(微软这是继测试之后把产品团队也砍了吗),大概就是「 Mozilla Firefox 请求使用安全密钥」、「输入 windows hello PIN 确认」,我根本没有意识到这里调用的不是 yubikey.

要注册上 yubikey, 是需要在输入 windows hello PIN 的步骤点取消,然后才会 fallback 过去,提示触摸安全密钥。

这个问题真的挺严重的,我作为信息安全从业人员都被这文案骗过去了,它就不能在第一步先把能找到的 key 列出来让我选一个吗

Migration

网站应该是可以 override 这个顺序,或者拒绝掉 windows hello 作为 authenticator 的。Google 账户注册 key 的时候就会跳过 windows hello, 直接提示触摸安全密钥。

作为用户,就是注册 key 看到弹框里带有 windows hello 的就点取消。注册完 sign out, 拔掉 yubikey 再登录试试,看看会不会登录失败。

References

www.reddit.com/r/yubikey/comments/l7rl5r/users_accidentally_setting_fido2_pin/gl8nqu1

国内用着舒服的远程控制软件有什么推荐吗

Posted: 09 Jul 2021 11:50 AM PDT

准备弃用 todesk 了

IDEA 连不上 Docker,求救。。。

Posted: 09 Jul 2021 09:12 AM PDT

我的电脑是 MAC,然后装了 Docker Desktop 。

IDEA 配置 docker 的时候,我点了 Docker for Mac,于是下面就出现了 connecting,过了大概一两分钟出现了报错:Connot connect: java.io.IOException: unexpected end of stream on http://docker.socket/...

百度谷歌都搜不到,就跑来问了,有无老哥有遇到过 QAQ

大家升级群晖 DSM 7.0 登陆网页端还能超时自动退出吗?

Posted: 09 Jul 2021 08:58 AM PDT

太难了,这个新系统还是有点拉垮,大问题没有,可见的小问题还是不少。目前发现 3 处问题。

升级最新 7.0-41890,发现网页端登录之后,不能超时自动退出了,只能手动清除 cookie 才能解决。用公司电脑登录,不能超时退出还是很不方便的。(貌似安装了 Drive 就会自动激活这个 BUG~)

那个 Download Station 即便卸载的时候勾选了清除数据,重装,数据也都还在。 那个 Synology Calendar 也是,卸载勾选了清除数据,重装之后,通知栏的 40 多条通知消息也整整齐齐的躺在里面。。。

私以为这种肉眼可见的小问题真的不应该出现额。

求推荐 spring mvc 项目

Posted: 09 Jul 2021 08:18 AM PDT

求推荐一个项目架构良好的 spring mvc 项目。我看过很多就是比较简略。我希望比较完整的项目有用到 aop,filter interceptor dispatcherservlet, applicationcontext 之类的配置的。也希望有 mvc 模板引擎的。谢谢大家。

群辉怎么查看已经共享给别人的文件/文件夹?

Posted: 09 Jul 2021 05:00 AM PDT

我用公网 ddns 分享给别人下载的,但是我再进 dsm 桌面就找不到哪些文件和文件夹已经共享出去了。想把权限关掉。

No comments:

Post a Comment