2008-08-06 251 views
60

Sé que podemos obtener la dirección MAC de un usuario a través de IE (objetos ActiveX).Direcciones MAC en JavaScript

¿Hay alguna forma de obtener la dirección MAC de un usuario mediante JavaScript?

Respuesta

33

Estoy de acuerdo con todas las respuestas anteriores de que sería una vulnerabilidad de privacidad/seguridad si pudiera hacer esto directamente desde Javascript. Hay dos cosas que se me ocurren:

  • Uso de Java (con un applet firmado)
  • Uso firmados Javascript, que en FF (y Mozilla en general) recibe privilegios superiores a JS normales (pero es bastante complicado de configurar)
41

La respuesta rápida y simple es No.

Javascript es bastante un lenguaje de alto nivel y no tiene acceso a este tipo de información.

+0

entonces ¿qué pasa con todo el resultado de búsqueda de Google que proporciona códigos de muestra para obtener direcciones MAC – Moon

+13

He tenido un rápido vistazo a Google y todas las páginas que leí eran Solución IE única que se basó en el uso de objetos ActiveX. Si pudieras publicar un enlace que demuestre lo contrario ... – GateKiller

+7

Realmente no creo que ser un "lenguaje de alto nivel" tenga algo que ver con las direcciones MAC, ya que cualquier lenguaje de programación del lado del servidor le permite acceder a la tabla ARP, incluso indirectamente (por ejemplo, a través de un subproceso). Creo que el "lenguaje del lado del cliente" funcionaría mejor ... – refi64

4

Si esto es para una aplicación de intranet y todos los clientes usan DHCP, puede consultar el servidor DHCP para obtener la dirección MAC para una dirección IP determinada.

+2

¿Cómo puedo hacer eso? – Bardo91

5

Nope. La razón por la cual ActiveX puede hacerlo es porque ActiveX es una pequeña aplicación que se ejecuta en la máquina del cliente.

Me imagino que el acceso a dicha información a través de JavaScript sería una vulnerabilidad de seguridad.

20

No, no se puede obtener la dirección MAC en JavaScript, principalmente porque la dirección MAC identifica de manera única la computadora en ejecución, por lo que sería una vulnerabilidad de seguridad.

Ahora bien, si todo lo que necesita es un identificador único, le sugiero que cree uno usted mismo utilizando algún algoritmo criptográfico y lo almacena en una cookie.

Si realmente necesita conocer la dirección MAC de la computadora Y está desarrollando aplicaciones internas, le sugiero que utilice un componente externo para hacer eso: ActiveX para IE, XPCOM para Firefox (instalado como una extensión).

+0

¿Conoces algún componente externo para Safari? –

+0

No. De hecho, estaba sugiriendo crear uno. –

+0

¿cómo está sugiriendo crear un identificador único? ¿cómo se usa un algoritmo criptográfico para garantizar que el usuario que lo ejecuta en su máquina obtenga una identificación única? – Michael

-15

no puede acceder a la MAC address, aunque se puede conseguir el IP address del usuario

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

Referencia: (Ver here).

+1

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). – Mena

+3

@Mena: El autor quería obtener la dirección MAC en todos los navegadores, lo que no está permitido por razones de seguridad, así que le di una forma de identificar el cliente-máquina a través de la dirección IP con el enlace adecuado al código. –

+0

Además, esto no le da a las máquinas IP internas si está detrás de NAT, sino que proporciona la IP externa, que puede obtener fácilmente en el servidor web como en php $ _SERVER ["REMOTE_ADDR"] –

0

Estaba buscando el mismo problema y tropecé con el siguiente código.

Cómo obtener la dirección MAC del cliente (web):

Para conseguir que el cliente dirección MAC única manera en que podemos confiar en JavaScript y el control Active X de Microsoft.It es único trabajo en el IE si Active X habilitar para IE . Como ActiveXObject no está disponible con Firefox, no funciona con Firefox y funciona bien en IE.

Este script es sólo para 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> 
Cuestiones relacionadas