为什么js没办法获取用户电脑的硬件信息?网上都说为了安全考虑。那为什么装在用户电脑的cs软件就可以访问硬件信息?难道这些就不用考虑安全了吗?
为什么 JavaScript 无法获取用户电脑的详细硬件信息,而某些本地安装的客户端软件(CS软件)却可以访问硬件信息,这主要出于以下原因:
JavaScript 的运行环境和权限限制:
JavaScript 主要在浏览器中运行,而浏览器对 JavaScript 访问用户系统的权限进行了严格的限制。这种限制是为了保护用户的安全和隐私,防止恶意脚本获取用户的敏感信息或进行未经授权的操作。在浏览器中,JavaScript 的权限被限制在浏览器沙箱(sandbox)中,无法直接访问用户系统的底层硬件信息。
客户端软件的权限和安装过程:
与 JavaScript 不同,本地安装的客户端软件在安装过程中通常会请求一系列的系统权限。这些权限允许软件访问系统的底层资源,包括硬件信息。用户在安装软件时,会看到一个权限请求对话框,需要明确同意软件请求的权限。这样,用户在安装软件时已经对软件可能进行的操作有所了解,并作出了明确的选择。
安全性的考虑:
对于本地安装的客户端软件,虽然它们可以访问硬件信息,但这并不意味着它们不需要考虑安全性。实际上,软件开发者需要非常小心地处理用户数据,并遵守相关的隐私政策和法规。此外,操作系统和防病毒软件也会监控这些软件的行为,以防止它们进行恶意活动。
JavaScript 与客户端软件的不同用途:
JavaScript 主要用于构建网页和 web 应用程序,它的设计初衷并不是为了访问硬件信息。而客户端软件则通常是为了实现更复杂的功能,包括与硬件设备的交互,因此它们需要更多的系统权限。
总结来说,JavaScript 无法获取用户电脑的详细硬件信息主要是出于安全和隐私的考虑,而本地安装的客户端软件之所以可以访问硬件信息,是因为它们在安装过程中请求了相应的权限,并且受到了操作系统和防病毒软件的监控。
因为成本差很远。我可以通过 qq 微信 给你发一个链接,或者网页上挂一个链接,然后用户点一下就来到我的网站。但是本地软件需要下载、安装、运行,两者之间的效率差得多,自然对风险防护的要求也差得远。
8 回答4.7k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
这本质就是一个信任的问题,你安装某个软件,就代表你信任这个软件,在你的授权范围内它可以做它的任何事。
但是浏览器是个例外,浏览器只是个 “窗口”,可以链接到任意一个网站,浏览器没法代表你去信任这些网站,同样的,浏览器也没办法承担这背后带来的损失(包括且不限于自身和用户的损失)。
放在以前, IE 的 ActiveX,就几乎具有操作系统的所有权限,虽然 IE 设置了一些门槛来限制 ActiveX 的运行,但实际上这个门槛很低。
比较常见的,以前大多数银行的在线的网银业务都需要安装一个认证控件,用户只需要点几下,就给启用了,有的还贴心加上了图文教程教你怎么启用。
而作为用户,你只能信任银行的控件不会乱来,因为他现在可以做任何事情,这对于大公司一般来说是有保障的,而对于一些没有底线小网站呢?
到时候出了事儿,锅又丢给浏览器 “我就点了个链接而已,我的密钥就被偷了、系统就中毒了”。
这几年 JS 的标准中,都在有限制的开放一些 API 访问权限,但是这些权限都是为了来增强 Web 的使用,比如 File System API 、Web Bluetooth API、WebUSB API 等,一系列有用的接口。
而不是用来应对一些无关紧要,甚至无理的需求。
要获取信息,不是没有办法,只是看这个方法能否接受。
比如,你可以使用 Electron 打包成你自己专属的软件(浏览器)。
或者编写一个 C 端软件,在本地启用一个 HTTP 服务,响应你需要的信息,并且注册成开机自启服务,你再在代码里面请求这个接口。