JavaScript中的MAC地址


Answers:


57

我同意所有先前的答案,如果您能够直接从Javascript做到这一点,它将是一个隐私/安全漏洞。我可以想到两件事:

  • 使用Java(带有签名的applet)
  • 使用签名的Javascript,在FF(通常是Mozilla)中,它比普通的JS具有更高的特权(但设置起来相当复杂)

1
我很想知道,我们可以通过JavaScript从用户那里获得诸如mac地址或序列号之类的独特信息吗?还是PC名称?
Flamur Beqiraj,

55

快速简单的答案是“否”。

Javascript是一种高级语言,无法访问此类信息。


那么什么有关的所有谷歌的搜索结果提供示例代码来获得MAC地址的
月球

14
我快速浏览了一下Google,我阅读的所有页面都是仅使用IE的IE解决方案,该解决方案依赖于使用ActiveX对象。如果您可以发布一个显示其他内容的链接...
GateKiller

25
我真的不认为作为“高级语言”与MAC地址有任何关系,因为任何服务器端编程语言都允许您访问ARP表,甚至可以间接访问(例如通过子进程)。我认为“客户端语言”会更好...
kirbyfan64sos

6
没有理由不能使高级语言无法访问低级硬件信息。在这种情况下,这不会发生,因为这将是一个安全问题。
nsn

31

不,您不能在JavaScript中获得MAC地址,主要是因为MAC地址唯一地标识正在运行的计算机,因此这是一个安全漏洞。

现在,如果您只需要一个唯一的标识符,我建议您使用某种加密算法自己创建一个并将其存储在cookie中。

如果您确实需要知道计算机的MAC地址并且正在为内部应用程序开发,那么建议您使用外部组件来执行此操作:针对IE的ActiveX,针对Firefox的XPCOM(作为扩展安装)。


您是否知道Safari的外部组件?

不。我实际上是建议创建一个。
文森特·罗伯特

您如何建议创建一个唯一标识符?您如何使用加密算法来确保在其计算机上运行该算法的用户获得唯一的ID?
迈克尔

2
@Michael Wikipedia列出了几种UUID实现
Vincent Robert

7

不。ActiveX之所以能够做到这一点,是因为ActiveX是一个在客户端计算机上运行的小应用程序。

我想通过JavaScript访问此类信息将是一个安全漏洞。



4

我一直在寻找相同的问题,偶然发现了以下代码。

如何获取客户端MAC地址(Web):

要仅以一种方式获取客户端MAC地址,我们可以依靠Microsoft的JavaScript和Active X控件。只有在Active X启用IE的情况下,它才能在IE中工作。由于ActiveXObject在Firefox中不可用,因此无法在Firefox中使用,并且在IE中可以正常工作。

该脚本仅适用于IE:

function showMacAddress() {
    var obj = new ActiveXObject("WbemScripting.SWbemLocator");
    var s = obj.ConnectServer(".");
    var properties = s.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
    var e = new Enumerator(properties);
    var output;
    output = '<table border="0" cellPadding="5px" cellSpacing="1px" bgColor="#CCCCCC">';
    output = output + '<tr bgColor="#EAEAEA"><td>Caption</td><td>MACAddress</td></tr>';
    while (!e.atEnd()) {
        e.moveNext();
        var p = e.item();
        if (!p) continue;
        output = output + '<tr bgColor="#FFFFFF">';
        output = output + '<td>' + p.Caption; +'</td>';
        output = output + '<td>' + p.MACAddress + '</td>';
        output = output + '</tr>';
    }
    output = output + '</table>';
    document.getElementById("box").innerHTML = output;
}

showMacAddress();
<div id='box'></div>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.