JavaScriptのMACアドレス


102

IE(ActiveXオブジェクト)を介してユーザーのMACアドレスを取得できることを知っています。

JavaScriptを使用してユーザーのMACアドレスを取得する方法はありますか?

回答:


57

Javascriptから直接これを行うことができればプライバシー/セキュリティの脆弱性になるという以前のすべての回答に同意します。考えられることは2つあります。

  • Javaの使用(署名付きアプレット)
  • 署名されたJavascriptを使用します。これは、FF(およびMozilla全般)で通常のJSよりも高い特権を取得します(ただし、設定はかなり複雑です)

1
私は知りたがっていましたが、JavaScriptを介してユーザーからMACアドレスやシリアル番号などの固有の情報を取得できますか?またはPC名?
Flamur Beqiraj

55

迅速かつ簡単な答えはノーです。

JavaScriptは非常に高級な言語であり、この種の情報にアクセスできません。


次に、MACアドレスを取得するためのサンプルコードを提供するすべてのgoogle検索結果についてはどうでしょう

14
私はグーグルの周りをざっと見て、私が読んだページはすべて、ActiveXオブジェクトの使用に依存するIEのみのソリューションでした。他に表示されているリンクを投稿できる場合...
GateKiller、2011年

25
私は「高水準言語」であることはMACアドレスとは何の関係もないと思います。サーバー側のプログラミング言語を使用すると、間接的に(たとえばサブプロセスを通じて)ARPテーブルにアクセスできるからです。「クライアント側の言語」の方がうまくいくと思います...
kirbyfan64sos

6
高水準言語が低水準のハードウェア情報にアクセスできない理由はありません。この場合、セキュリティ上の問題になるため、これは起こりません。
nsn

31

いいえ、JavaScriptでMACアドレスを取得することはできません。これは、主にMACアドレスが実行中のコンピューターを一意に識別するため、セキュリティの脆弱性になるためです。

一意の識別子が必要な場合は、暗号化アルゴリズムを使用して自分で作成し、Cookieに保存することをお勧めします。

コンピューターのMACアドレスを本当に知る必要があり、内部アプリケーション用に開発している場合は、外部コンポーネントを使用してそれを行うことをお勧めします:ActiveX for IE、XPCOM for Firefox(拡張機能としてインストール)。


Safariの外部コンポーネントを知っていますか?

いいえ。私は実際に作成することを提案していました。
Vincent Robert

一意の識別子を作成することをどのように提案していますか?暗号アルゴリズムを使用して、自分のマシンで実行するユーザーが一意のIDを取得することを保証するにはどうすればよいですか?
マイケル

2
@Michael Wikipediaには、いくつかのUUID実装が
Vincent Robert

7

いいえ。ActiveXがこれを実行できるのは、ActiveXがクライアントのマシンで実行される小さなアプリケーションだからです。

JavaScriptを介してそのような情報にアクセスすることはセキュリティ上の脆弱性になると思います。


4

これがイントラネットアプリケーション用であり、すべてのクライアントがDHCPを使用している場合は、DHCPサーバーに特定のIPアドレスのMACアドレスを照会できます。


4

私は同じ問題を探していて、次のコードを見つけました。

クライアントのMACアドレスを取得する方法(Web):

クライアントのMACアドレスを取得するには、MicrosoftのJavaScriptと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>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.