2008-08-06 38 views
60

Tôi biết rằng chúng tôi có thể lấy địa chỉ MAC của người dùng thông qua IE (đối tượng ActiveX).Địa chỉ MAC trong JavaScript

Có cách nào để lấy địa chỉ MAC của người dùng bằng JavaScript không?

Trả lời

33

Tôi đồng ý với tất cả câu trả lời trước rằng đó sẽ là lỗ hổng bảo mật/riêng tư nếu bạn có thể thực hiện việc này trực tiếp từ Javascript. Có hai điều tôi có thể nghĩ:

  • Sử dụng Java (với một applet đã ký)
  • Sử dụng ký Javascript, mà trong FF (và Mozilla nói chung) được đặc quyền cao hơn JS bình thường (nhưng nó là khá phức tạp để thiết lập)
41

Câu trả lời nhanh chóng và đơn giản là số

Javascript là ngôn ngữ khá cao và không có quyền truy cập vào loại thông tin này.

+0

sau đó những gì về tất cả các kết quả tìm kiếm google cung cấp mã số mẫu để có được địa chỉ MAC – Moon

+13

Tôi đã có một cái nhìn nhanh xung quanh Google và tất cả các trang tôi đọc được Giải pháp duy nhất của IE dựa vào việc sử dụng các đối tượng ActiveX. Nếu bạn có thể đăng liên kết hiển thị theo cách khác ... – GateKiller

+7

Tôi thực sự không nghĩ là "ngôn ngữ cấp cao" có liên quan đến địa chỉ MAC, vì bất kỳ ngôn ngữ lập trình phía máy chủ nào cho phép bạn truy cập bảng ARP, thậm chí gián tiếp (ví dụ: thông qua một tiến trình con). Tôi nghĩ rằng "ngôn ngữ phía máy khách" sẽ hoạt động tốt hơn ... – refi64

4

Nếu đây là ứng dụng mạng nội bộ và tất cả khách hàng sử dụng DHCP, bạn có thể truy vấn máy chủ DHCP cho địa chỉ MAC cho địa chỉ IP đã cho.

+2

Tôi có thể làm như thế nào? – Bardo91

5

Không. Lý do ActiveX có thể làm là vì ActiveX là một ứng dụng nhỏ chạy trên máy của khách hàng.

Tôi cho rằng việc truy cập thông tin đó thông qua JavaScript sẽ là lỗ hổng bảo mật.

20

Không, bạn không thể nhận địa chỉ MAC bằng JavaScript, chủ yếu là do địa chỉ MAC nhận dạng duy nhất máy tính đang chạy, do đó, nó sẽ là lỗ hổng bảo mật.

Bây giờ nếu tất cả những gì bạn cần là số nhận dạng duy nhất, tôi khuyên bạn nên tự tạo một số nhận dạng bằng cách sử dụng một số thuật toán mã hóa và lưu trữ nó trong cookie.

Nếu bạn thực sự cần biết địa chỉ MAC của máy tính VÀ bạn đang phát triển cho các ứng dụng nội bộ, thì tôi khuyên bạn nên sử dụng thành phần bên ngoài để thực hiện điều đó: ActiveX cho IE, XPCOM cho Firefox (được cài đặt dưới dạng tiện ích mở rộng).

+0

Bạn có biết một thành phần bên ngoài cho Safari không? –

+0

No. Tôi đã thực sự gợi ý để tạo ra một. –

+0

bạn đề xuất cách tạo số nhận dạng duy nhất như thế nào? làm thế nào để bạn sử dụng một thuật toán mã hóa để đảm bảo rằng người dùng bao giờ chạy nó trên máy của họ nhận được một id duy nhất? – Michael

-15

bạn không thể truy cập vào MAC address, mặc dù bạn có thể nhận được IP address của người sử dụng

<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> 

tham khảo: (Xem here).

+1

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có đủ [danh tiếng] (http://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bài đăng bất kỳ] (http://stackoverflow.com/help/privileges/comment). – Mena

+3

@Mena: Tác giả muốn nhận địa chỉ MAC trong tất cả các trình duyệt không được phép vì lý do bảo mật, vì vậy tôi đã cung cấp cho anh ta cách xác định máy khách thông qua địa chỉ IP với liên kết thích hợp tới mã. –

+0

Ngoài ra, điều này không cung cấp cho các máy nội bộ IP nếu nó là phía sau NAT, nó cung cấp cho IP bên ngoài, mà bạn có thể dễ dàng nhận được trên máy chủ web như trong php $ _SERVER [“REMOTE_ADDR”] –

0

tôi đang tìm kiếm cùng một vấn đề và tình cờ gặp phải mã sau.

Làm thế nào để có được địa chỉ khách hàng MAC (Web):

Để có được khách hàng địa chỉ MAC chỉ cách chúng ta có thể dựa vào JavaScript và kiểm soát Active X của Microsoft.It chỉ làm việc trong IE nếu Active X cho phép cho IE . Vì ActiveXObject không có sẵn với Firefox, nó không hoạt động với firefox và hoạt động tốt trong IE.

Kịch bản này chỉ dành cho 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> 
Các vấn đề liên quan