2008-08-06 80 views
60

IE(ActiveXオブジェクト)を介してユーザーのMACアドレスを取得できることがわかりました。JavaScriptのMACアドレス

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

答えて

33

Javascriptから直接これを行うことができれば、私はプライバシー/セキュリティの脆弱性であるという前のすべての回答に同意します。 FF(と一般的にはMozillaの)で通常のJSよりも高い権限を取得します(しかし、それはかなりある署名Javascriptを使用して、(署名付きアプレットを持つ)は、Java

  • を使用して

    • :私は考えることができる2つあります)設定が複雑
  • 41

    迅速かつ簡単な答えはJavascriptがかなり高いレベルの言語であり、この種の情報へのアクセス権を持っていない番号

    です。

    +0

    その後、MACは – Moon

    +13

    アドレスを取得するサンプルコードを提供するすべてのGoogle検索結果については、私はGoogleの周りに簡単に見て持っていたと私は読んですべてのページが何でしたかActiveXオブジェクトを使用しているIEのみのソリューション。そうでなければ表示リンクを投稿することができます... – GateKiller

    +7

    私は本当に "高水準言語"はMACアドレスとは関係ないと思っています。サーバサイドのプログラミング言語であれば、たとえ間接的に(例えばサブプロセスを通して)ARPテーブルにアクセスすることができます。私は "クライアント側の言語"がうまくいくと思います... – refi64

    4

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

    +2

    どうすればいいですか? – Bardo91

    5

    いいえ。 ActiveXがそれを行う理由は、ActiveXがクライアントのマシン上で動作する小さなアプリケーションであるためです。

    私は、JavaScriptを介したこのような情報へのアクセスはセキュリティ上の脆弱性であると考えています。

    20

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

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

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

    +0

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

    +0

    いいえ、私は実際に作成するよう提案していました。 –

    +0

    一意の識別子を作成するにはどうすればよいですか?暗号アルゴリズムを使用して、マシン上で実行するユーザーが一意のIDを取得できるようにするにはどうすればよいですか? – Michael

    -15

    ユーザー

    <script type="application/javascript"> 
        function getip(json){ 
         alert(json.ip); // alerts the ip address 
        } 
    </script> 
    
    <script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"> 
    </script> 
    

    リファレンスのIP addressを得ることができますが、あなたは、MAC addressにアクセスすることはできません。 (here参照)。

    +1

    が表示されていますが、これは質問に対する回答ではありません。批評をしたり、著者の説明を求めるには、自分の投稿の下にコメントを残してください。自分の投稿にいつもコメントをつけることができます。そして、十分な[評判](http://stackoverflow.com/help/whats-reputation) [任意の投稿にコメントする]ことができます(http://stackoverflow.com/help/privileges/comment)。 – Mena

    +3

    @Mena:著者は、セキュリティ上の理由から許可されていないすべてのブラウザでMACアドレスを取得したかったので、コードへの適切なリンクを使用してクライアントマシンをIPアドレスで識別する方法を彼に教えました。 –

    +0

    また、NATの背後にある場合、これはマシンの内部IPを与えません。外部IPを提供します。これは、php $ _SERVER ["REMOTE_ADDR"]のようにWebサーバに簡単にアクセスできます。 –

    0

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

    は、クライアントのMACアドレス(ウェブ)を取得する方法:

    は、クライアントMACは、我々はJavaScriptとMicrosoft.ItのアクティブXコントロールに頼ることができる唯一の方法に対処取得するにはActive Xのは、IEのために有効にした場合、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> 
    
    関連する問題