Javascript访问硬件?

use*_*461 1 javascript browser security

我在一家拥有网络和移动应用程序的公司工作.他们将实施一些更改,以从基于移动和Web浏览器的系统获取设备ID.看起来Javascript有能力获得像主板序列号等硬件信息.我对此感到有点震惊,因为我虽然我的桌面浏览器在这方面有些限制.

所以,我对这个小组的问题是:

  1. 对于运行不同浏览器的WIN/MAC/Linux桌面系统,这是真的吗?
  2. 无论如何要阻止这一点,并控制哪些不道德的供应商/代理商可以从我的系统剥离我的?

SLa*_*aks 6

这完全是假的.

浏览器内的 Javascript(不使用插件)没有硬件访问权限,(我强烈认为)永远不会有.

  • 好吧,技术上`webGL`确实有硬件访问权限.我没有看到这个答案的+100. (4认同)

nam*_*uol 5

一般来说,浏览器制造商(例如微软的IE、Google Chrome、Mozilla Firefox等)不提供用于访问特定硬件信息的JavaScript机制。

然而,在某些浏览器(尤其是“传统”浏览器,如 IE6)中,使用 ActiveX、插件、Java Applet,甚至特定的浏览器漏洞可以通过在浏览器的安全范围之外执行代码来泄露此类信息。您的雇主希望从哪个平台检索此信息?

下面是通过 JavaScript 使用 ActiveX 的示例。

我亲自在IE8中测试了这段代码。它正确显示主板信息,包括序列号。IE8 提示我允许脚本运行,但旧版本或配置不当的版本可能会无条件运行脚本。(原始来源):

var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
var service = locator.ConnectServer(".");
var properties = service.ExecQuery("SELECT * FROM Win32_BaseBoard");
var e = new Enumerator (properties);
document.write("<table border=1>");
for (;!e.atEnd();e.moveNext ())
{
      var p = e.item ();
      document.write("<tr>");
      document.write("<td>" + p.HostingBoard + "</td>");
      document.write("<td>" + p.Manufacturer + "</td>");
      document.write("<td>" + p.PoweredOn + "</td>");
      document.write("<td>" + p.Product + "</td>");
      document.write("<td>" + p.SerialNumber + "</td>");
      document.write("<td>" + p.Version + "</td>");
      document.write("</tr>");
}
document.write("</table>");
Run Code Online (Sandbox Code Playgroud)

为了防止您的计算机发生这种情况,请使用现代浏览器(IE9、FF4+、Chrome)并始终保持最新状态。此外,请注意您安装的插件,更重要的是,请注意您安装它们的位置

  • 我从来没有说过天要塌下来。我试图说明这并不是不可能的。截至 [2011 年 8 月,大约 18% 的浏览器市场份额运行的是 IE8 或更早版本](http://www.w3schools.com/browsers/browsers_explorer.asp)。 (3认同)