MAC-адреса в JavaScript - PullRequest
       128

MAC-адреса в JavaScript

83 голосов
/ 06 августа 2008

Я знаю, что мы можем получить MAC-адрес пользователя через IE (объекты ActiveX).

Есть ли способ получить MAC-адрес пользователя с помощью JavaScript?

Ответы [ 6 ]

48 голосов
/ 06 августа 2008

Быстрый и простой ответ: Нет.

Javascript является языком довольно высокого уровня и не имеет доступа к такого рода информации.

47 голосов
/ 14 августа 2008

Я согласен со всеми предыдущими ответами, что было бы уязвимостью конфиденциальности / безопасности, если бы вы могли сделать это непосредственно из Javascript. Я могу думать о двух вещах:

  • Использование Java (с подписанным апплетом)
  • Использование подписанного Javascript, который в FF (и Mozilla в целом) получает более высокие привилегии, чем обычный JS (но его довольно сложно настроить)
25 голосов
/ 11 августа 2008

Нет, вы не можете получить MAC-адрес в JavaScript, главным образом потому, что MAC-адрес однозначно идентифицирует работающий компьютер, поэтому это будет уязвимость безопасности.

Теперь, если все, что вам нужно, это уникальный идентификатор, я предлагаю вам создать его самостоятельно, используя некоторый криптографический алгоритм, и сохранить его в файле cookie.

Если вам действительно нужно знать MAC-адрес компьютера И вы разрабатываете для внутренних приложений, то я предлагаю вам использовать для этого внешний компонент: ActiveX для IE, XPCOM для Firefox (установлен как расширение).

6 голосов
/ 06 августа 2008

Неа. ActiveX может сделать это потому, что ActiveX - это небольшое приложение, которое работает на компьютере клиента.

Я полагаю, что доступ к такой информации через JavaScript был бы уязвимостью безопасности.

4 голосов
/ 06 августа 2008

Если это приложение для интрасети, и все клиенты используют DHCP, вы можете запросить у DHCP-сервера MAC-адрес для данного IP-адреса.

2 голосов
/ 05 января 2018

Я искал ту же проблему и наткнулся на следующий код.

Как получить MAC-адрес клиента (Интернет):

Чтобы получить клиентский MAC-адрес только так, мы можем полагаться на JavaScript и Active X-контроль над Microsoft. Работа в IE возможна только в том случае, если Active X разрешен для IE. Поскольку ActiveXObject недоступен в Firefox, он не работает с 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>
...