为什么js没办法获取用户电脑的硬件信息?
为什么js没办法获取用户电脑的硬件信息?网上都说为了安全考虑。那为什么装在用户电脑的cs软件就可以访问硬件信息?难道这些就不用考虑安全了吗?
回复
1个回答

test
2024-06-18
这本质就是一个信任的问题,你安装某个软件,就代表你信任这个软件,在你的授权范围内它可以做它的任何事。
但是浏览器是个例外,浏览器只是个 “窗口”,可以链接到任意一个网站,浏览器没法代表你去信任这些网站,同样的,浏览器也没办法承担这背后带来的损失(包括且不限于自身和用户的损失)。
放在以前, IE 的 ActiveX,就几乎具有操作系统的所有权限,虽然 IE 设置了一些门槛来限制 ActiveX 的运行,但实际上这个门槛很低。
比较常见的,以前大多数银行的在线的网银业务都需要安装一个认证控件,用户只需要点几下,就给启用了,有的还贴心加上了图文教程教你怎么启用。
而作为用户,你只能信任银行的控件不会乱来,因为他现在可以做任何事情,这对于大公司一般来说是有保障的,而对于一些没有底线小网站呢?
到时候出了事儿,锅又丢给浏览器 “我就点了个链接而已,我的密钥就被偷了、系统就中毒了”。
这几年 JS 的标准中,都在有限制的开放一些 API 访问权限,但是这些权限都是为了来增强 Web 的使用,比如 File System API 、Web Bluetooth API、WebUSB API 等,一系列有用的接口。
而不是用来应对一些无关紧要,甚至无理的需求。
要获取信息,不是没有办法,只是看这个方法能否接受。比如,你可以使用 Electron 打包成你自己专属的软件(浏览器)。或者编写一个 C 端软件,在本地启用一个 HTTP 服务,响应你需要的信息,并且注册成开机自启服务,你再在代码里面请求这个接口。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容