繁体   English   中英

JavaScript 中的 MAC 地址

[英]MAC addresses in JavaScript

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

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

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

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

快速而简单的答案是否定的。

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

不,JavaScript 中无法获取 MAC 地址,主要是因为 MAC 地址唯一标识了正在运行的计算机,因此存在安全漏洞。

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

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

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

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

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

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

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

获取客户端MAC地址的唯一方式我们可以依靠JavaScript和Microsoft的Active X控件。只有在IE启用Active X时,它才能在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>

不,您不能以另一种方式使用 JavaScript 获取用户的 MAC 地址,只需在 IE 浏览器中使用 Microsoft 的 Active X op

我知道我参加这个聚会真的迟到了。 虽然答案仍然是否定的。 我找到了一种生成和存储唯一 ID 的方法,该 ID 有助于在用户浏览网站时跟踪他们。

当用户注册时,我会完整记录他在注册之前访问了哪些页面。 我还将这个 id 存储在用户表中以供历史参考。

当您正在寻找可疑活动时,这也很方便。 例如,创建了多个帐户的用户。 我应该注意,这是在金融交易网站上,数据仅在内部使用。 它确实有助于减少欺诈和受骗的帐户。 localStorage 和这种方法可以做很多事情,但我会尽量简短,以免给任何人带来邪恶的想法。

1-生成一个随机字符串。 如果您生成一个 40 字符的字符串,那么就它们碰撞而言,您真的不必担心太多。 我们不打算在这里向火星发射火箭。

我使用一个小的 PHP function 来生成一个 40 字符的字符串。 我使用 Ajax 调用此 function 并检索结果。

    function genrandstr($length=NULL) {
        if($length == NULL){ $length = 30; }
        $characters = 
        '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen($characters);
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
        return $randomString;
    }

    localStorage.setItem('id', id) to add to localStorage
    (let) or (var) id = localStorage.getItem('id') to read from localStorage

2- 使用 cookies,您可以将此 id 存储在 cookie 中。

3- LocalStorage 是你的朋友。 将相同的 id 存储在 LocalStorage 中,很可能,您将始终有该 id 可以查看。

使用存储在 LocalStorage 中的 id,您的用户可以删除 cookies,您仍然可以通过此 id 识别老访客。

如果用户删除了他们所有的数据,那么你就是 SOL 并且在他们重新访问时重新开始。

玩得开心

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM