JavaScript中的MAC地址

时间:2008-08-06 13:43:45

标签: javascript mac-address

我知道我们可以通过IE(ActiveX对象)获取用户的MAC地址。

有没有办法使用JavaScript获取用户的MAC地址?

6 个答案:

答案 0 :(得分:47)

快速而简单的答案是否。

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

答案 1 :(得分:47)

我同意之前的所有答案,如果您能够直接从Javascript执行此操作,那将是一个隐私/安全漏洞。我能想到两件事:

  • 使用Java(带有签名的小程序)
  • 使用签名的Javascript,在FF(和一般的Mozilla)中获得比普通JS更高的权限(但设置相当复杂)

答案 2 :(得分:25)

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

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

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

答案 3 :(得分:6)

不。 ActiveX可以做到这一点的原因是因为ActiveX是一个在客户端机器上运行的小应用程序。

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

答案 4 :(得分:4)

如果这是针对Intranet应用程序而且所有客户端都使用DHCP,则可以在DHCP服务器中查询给定IP地址的MAC地址。

答案 5 :(得分:2)

我正在寻找同样的问题并偶然发现以下代码。

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

要获取客户端MAC地址,我们可以依赖于Microsoft的JavaScript和Active X控件。如果Active X启用IE,它仅适用于IE。由于Firefox不提供ActiveXObject,因此它无法与Firefox一起使用,并且在IE中工作正常。

此脚本仅适用于IE:

<script language="javascript" type="text/javascript">
    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;
    }
</script>