質問
IE (ActiveX オブジェクト) を介してユーザーの MAC アドレスを取得できることは知っています。
JavaScriptを使用してユーザーのMACアドレスを取得する方法はありますか?
解決
これを Javascript から直接実行できる場合、プライバシー/セキュリティの脆弱性になるというこれまでの回答すべてに同意します。考えられることは次の 2 つです。
- Java の使用 (署名付きアプレットを使用)
- 署名付き Javascript を使用します。FF (および Mozilla 全般) では、通常の JS よりも高い権限が与えられます (ただし、設定はかなり複雑です)。
他のヒント
簡単かつ簡単な答えは「いいえ」です。
JavaScript は非常に高級な言語であり、この種の情報にはアクセスできません。
いいえ、JavaScript で MAC アドレスを取得することはできません。主な理由は、MAC アドレスは実行中のコンピュータを一意に識別するため、セキュリティ上の脆弱性となるからです。
ここで、一意の識別子だけが必要な場合は、暗号化アルゴリズムを使用して自分で識別子を作成し、それを Cookie に保存することをお勧めします。
コンピュータの MAC アドレスを本当に知る必要があり、かつ内部アプリケーション用に開発している場合は、外部コンポーネントを使用してそれを行うことをお勧めします。IE の場合は ActiveX、Firefox の場合は XPCOM (拡張機能としてインストールされます)。
いいえ。ActiveX がこれを実行できる理由は、ActiveX がクライアントのマシン上で実行される小さなアプリケーションだからです。
JavaScript 経由でそのような情報にアクセスすると、セキュリティ上の脆弱性が発生すると思います。
これがイントラネット アプリケーション用で、すべてのクライアントが DHCP を使用している場合は、特定の IP アドレスの MAC アドレスを DHCP サーバーに問い合わせることができます。
同じ問題を探していたところ、次のコードを見つけました。
クライアントMACアドレスの取得方法(Web):
クライアントの MAC アドレスを取得するには、Microsoft の JavaScript と Active X コントロールに依存する唯一の方法があります。IE で Active X が有効になっている場合にのみ機能します。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>