MAC-адреса в JavaScript

MAC-адреса - JavaScript

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

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

8 ответов

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

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

Мне было любопытно узнать, можем ли мы получить уникальную информацию, такую как адрес Mac или серийный номер или что-то в этом роде, от пользователя через JavaScript? Или имя ПК?

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

тогда как насчет всех результатов поиска Google, предоставляющих образцы кодов для получения MAC-адреса

Я быстро просмотрел Google, и все страницы, которые я прочитал, были единственным решением для IE, которое полагалось на использование объектов ActiveX. Если бы вы могли разместить ссылку, показывающую обратное...

Я действительно не думаю, что «язык высокого уровня» имеет какое-либо отношение к MAC-адресам, поскольку любой язык программирования на стороне сервера позволяет вам получить доступ к таблице ARP, даже косвенно (например, через подпроцесс). Я думаю, что "клиентский язык" будет работать лучше...

Нет причин, по которым язык высокого уровня не имел бы доступа к аппаратной информации низкого уровня. В этом случае этого не происходит, потому что это было бы проблемой безопасности.

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

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

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

Знаете ли вы о внешнем компоненте для Safari?

Нет. На самом деле я предлагал создать его.

как вы предлагаете создать уникальный идентификатор? как вы используете криптографический алгоритм, чтобы гарантировать, что каждый пользователь, который запустит его на своей машине, получит уникальный идентификатор?

Википедия перечисляет несколько реализаций UUID.

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

Неа. Причина, по которой ActiveX может это делать, заключается в том, что ActiveX — это небольшое приложение, которое запускается на клиентской машине. Я бы предположил, что доступ к такой информации через JavaScript был бы уязвимостью системы безопасности.

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

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

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

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

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

Это также удобно, когда вы ищете сомнительную деятельность. Например, пользователь, который создал несколько учетных записей. Я должен отметить, что это на сайте финансовых транзакций, и данные используются только для внутреннего использования. Это действительно помогает сократить количество мошеннических и обманутых аккаунтов. Многое можно сделать с помощью localStorage и этого метода, но я буду краток, чтобы не дать никому гнусных идей.

1- Генерировать случайную строку. Если вы генерируете строку из 40 символов, вам действительно не о чем беспокоиться, поскольку они сталкиваются. Мы не собираемся отправлять ракету на Марс.

Я использую небольшую функцию PHP для создания строки из 40 символов. Я использую Ajax для вызова этой функции и получения результата.

 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- Используя файлы cookie, вы можете сохранить этот идентификатор в файле cookie.

3- LocalStorage — ваш друг. Сохраните тот же идентификатор в LocalStorage, и, скорее всего, у вас всегда будет этот идентификатор для просмотра.

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

Если пользователь удалит все свои данные, то вы SOL и начнете все сначала, когда он вернется.

Веселиться

отпечатки пальцев браузера лучше, чем

Может быть, добавить пример того, как вы выполняете снятие отпечатков пальцев браузера для нас, менее просвещенных людей? Ваш ответ не дает никакой информации.

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

Это уже упоминалось во многих других ответах.

Захват клавиши TAB в текстовом поле

Захват клавиши TAB

Я хотел бы иметь возможность использовать клавишу Tab в текстовом поле для перехода через четыре пробела. Как и сейчас, клавиша Tab перемещает мой курсор к следующему вводу. Есть ли какой-нибудь JavaScript, который будет захватывать клавишу Tab в текстовом поле, прежде чем она появится в пользовательском интерфейсе? Я понимаю, что некоторые браузеры (например, FireFox) могут не допускать этого. Как насчет специальной комбинации клавиш, такой как Shift+Tab или Ctrl+Q? Не забудьте проверить сфокусированное окно и позволить ему нормально всплывать, если вы не находитесь в текстовой области редактора. 6 ответов Даже если вы фиксируете событие keydown/keyup, это единственные события, которые срабатывает клавиша табуляции, вам все равно нужен какой-то способ предотвратить действие по умолчанию, переход к следующему элементу в порядке табуляции. В Firefox вы можете вызвать метод preventDefault() для объекта события, переданного вашему…

Подробнее »

Как установить цвет фона элемента HTML, используя свойства css в JS

Как установить цвет фона элемента HTML

Как установить цвет фона HTML-элемента с помощью css в JavaScript? 17 ответов Как правило, свойства CSS преобразуются в JavaScript путем приведения их к верблюжьему регистру без дефисов. Так background-color становится backgroundColor . function setColor(element, color) { element.style.backgroundColor = color; } // where el is the concerned element var el = document.getElementById('elementId'); setColor(el, 'green'); Я хотел бы добавить, что цвет, очевидно, должен быть в кавычках element.style.backgroundColor = "color"; например - element.style.backgroundColor = "оранжевый"; отличный ответ В тестах Selenium…

Подробнее »

Как я могу заставить браузер видеть изменения CSS и Javascript?

Как увидеть изменения CSS и Javascript

Файлы CSS и Javascript меняются не очень часто, поэтому я хочу, чтобы веб-браузер кэшировал их. Но я также хочу, чтобы веб-браузер видел изменения, внесенные в эти файлы, не требуя от пользователя очистки кеша браузера. Также нужно решение, которое хорошо работает с системой контроля версий, такой как Subversion. Некоторые решения, которые я видел, включают добавление номера версии в конец файла в виде строки запроса. Можно использовать номер версии SVN, чтобы…

Подробнее »