Javascript访问硬件?

时间:2011-09-23 14:56:38

标签: javascript security browser

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

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

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

4 个答案:

答案 0 :(得分:6)

这完全是假的。

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

答案 1 :(得分:4)

一般情况下,浏览器制造商(如微软的IE,谷歌浏览器,Mozilla Firefox等)不提供访问特定硬件信息的JavaScript机制。

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

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

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

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>");

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

答案 2 :(得分:0)

  1. 否。证明:FireFox,Chrome / Chromium,仅举几例。
  2. 别担心。 JavaScript无法访问这些资源

答案 3 :(得分:-3)

浏览器无法访问硬件信息。

还有其他javascript工具,如Titanium或node.js,可以访问硬件或任何其他信息。