Foros del Web » Programando para Internet » PHP »

Conocer datos de usuario

Estas en el tema de Conocer datos de usuario en el foro de PHP en Foros del Web. Hola chicos. Cómo puedo hacer para tener los datos del equipo, ip, nombre de equipo, etc. de un usuario conectado a mi web. Gracias....
  #1 (permalink)  
Antiguo 14/05/2020, 13:30
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 581
Antigüedad: 11 años, 1 mes
Puntos: 7
Pregunta Conocer datos de usuario

Hola chicos.
Cómo puedo hacer para tener los datos del equipo, ip, nombre de equipo, etc. de un usuario conectado a mi web.
Gracias.
__________________
Todos somos iguales. NO! a la violencia de género.
  #2 (permalink)  
Antiguo 14/05/2020, 17:35
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.692
Antigüedad: 12 años, 3 meses
Puntos: 1117
Respuesta: Conocer datos de usuario

No se puede, a lo sumo conseguirás la IP, el nombre de equipo jamas lo conseguiras con una aplicacion web, seria un fallo de seguridad inmenso.

para la IP depende del lenguaje que estés trabajando, en PHP por ejemplo tienes $_SERVER allí vienen REMOTE_ADDR que me parece que seria la IP del cliente.
  #3 (permalink)  
Antiguo 15/05/2020, 03:25
Avatar de vb2005  
Fecha de Ingreso: noviembre-2005
Ubicación: Paderborn - Alemania
Mensajes: 553
Antigüedad: 14 años, 6 meses
Puntos: 24
Respuesta: Conocer datos de usuario

Cita:
Iniciado por ArturoGallegos Ver Mensaje
No se puede, a lo sumo conseguirás la IP, el nombre de equipo jamas lo conseguiras con una aplicacion web, seria un fallo de seguridad inmenso.

para la IP depende del lenguaje que estés trabajando, en PHP por ejemplo tienes $_SERVER allí vienen REMOTE_ADDR que me parece que seria la IP del cliente.
No es del todo así como un "fallo de seguridad inmenso".

Solo con PHP no obtendrás mucho, pero si puedes usar Javascript para conseguir bastante informacion sobre el equipo de un usuario:

usando la variable global `navigator` ahí dentro encontrarás: `navigator.oscpu, navigator.platform, navigator.buildID`

Con eso puedes hacer lo que se le llama un fingerprint del usuario para "asegurarte" de que es el mismo usuario independientemente del IP
__________________
www.marcher.com.uy - Web personal
Nerd's Corner - Desarrollo de software a medida
  #4 (permalink)  
Antiguo 15/05/2020, 04:47
 
Fecha de Ingreso: abril-2011
Mensajes: 125
Antigüedad: 9 años, 2 meses
Puntos: 44
Respuesta: Conocer datos de usuario

Cita:
No es del todo así como un "fallo de seguridad inmenso".
Creo que se refiere a que es un fallo de seguridad obtener el nombre del equipo con JavaScript. Esto antes se podía hacer en IE mediante complementos ActiveX, de ahí la mala fama de IE y por qué quedó en el olvido.

El resto de propiedades del objeto navigator no son tan invasivas (userAgent, sistema operativo etc.). La IP del cliente (pública) se puede obtener fácilmente como comentan: $_SERVER["REMOTE_ADDR"].

La IP local (privada) no es tan fácil, pero es posible si tienes WebRTC activado en tu navegador. Un ejemplo: http://net.ipcalf.com/

Última edición por prueba230683; 15/05/2020 a las 05:08
  #5 (permalink)  
Antiguo 15/05/2020, 09:46
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.122
Antigüedad: 16 años
Puntos: 810
Respuesta: Conocer datos de usuario

Lo de obtener un identificador único del equipo es algo que ha desvelado a muchos desde hace tiempo. Una técnica vía javascript llamada Canvas Fingerprint se describe aquí: https://browserleaks.com/canvas#how-does-it-work Se basa en las sutiles diferencias o entropía que se dan en la salida de una imagen generada por el elemento canvas de html5. Aunque el resultado no es totalmente exclusivo, como mencionan aquí: https://en.wikipedia.org/wiki/Canvas_fingerprinting, sumado a la ip y/o a otras técnicas existentes similares (AudioContext fingerprint, webGL fingerprint) puede brindar un identificador bastante confiable.
Dejo un ejemplo en javascript:
Código:
<script>
"use strict";
function bin2hex (s) {
  // From: http://phpjs.org/functions
  // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   bugfixed by: Onno Marsman
  // +   bugfixed by: Linuxworld
  // +   improved by: ntoniazzi (http://phpjs.org/functions/bin2hex:361#comment_177616)
  // *     example 1: bin2hex('Kev');
  // *     returns 1: '4b6576'
  // *     example 2: bin2hex(String.fromCharCode(0x00));
  // *     returns 2: '00'

  var i, l, o = "", n;

  s += "";

  for (i = 0, l = s.length; i < l; i++) {
    n = s.charCodeAt(i).toString(16)
    o += n.length < 2 ? "0" + n : n;
  }

  return o;
}
var canvas=document.createElement('canvas');
var txt = "BrowserLeaks,com <canvas> 1.0";
var ctx = canvas.getContext('2d');
ctx.textBaseline = "top";
ctx.font = "14px 'Arial'";
ctx.textBaseline = "alphabetic";
ctx.fillStyle = "#f60";
ctx.fillRect(125,1,62,20);
ctx.fillStyle = "#069";
ctx.fillText(txt, 2, 15);
ctx.fillStyle = "rgba(102, 204, 0, 0.7)";
ctx.fillText(txt, 4, 17);
var b64 = canvas.toDataURL().replace("data:image/png;base64,","");
var bin = atob(b64);
var myDeviceId = bin2hex(bin.slice(-16,-12));
alert(myDeviceId);
</script>
De obtención de IP hay varios códigos por ahí en php. Este es de https://stackoverflow.com/questions/...-from-visitor:
Código PHP:
<?PHP

function getUserIP()
{
    
// Get real visitor IP behind CloudFlare network
    
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
              
$_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
              
$_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }
    
$client  = @$_SERVER['HTTP_CLIENT_IP'];
    
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    
$remote  $_SERVER['REMOTE_ADDR'];

    if(
filter_var($clientFILTER_VALIDATE_IP))
    {
        
$ip $client;
    }
    elseif(
filter_var($forwardFILTER_VALIDATE_IP))
    {
        
$ip $forward;
    }
    else
    {
        
$ip $remote;
    }

    return 
$ip;
}


$user_ip getUserIP();

echo 
$user_ip// Output IP address [Ex: 177.87.193.134]


?>

Última edición por Panino5001; 15/05/2020 a las 09:52



La zona horaria es GMT -6. Ahora son las 13:20.