Necesito encontrar una manera única de identificar cada computadora que visita el sitio web que estoy creando. ¿Alguien tiene algún consejo sobre cómo lograr esto?
Como quiero que la solución funcione en todas las máquinas y todos los navegadores (dentro de lo razonable) estoy tratando de crear una solución usando javascript.
Las cookies no lo harán.
Necesito la capacidad de crear básicamente un guid que sea exclusivo de una computadora y que se pueda repetir, suponiendo que no se hayan producido cambios de hardware en la computadora. Las direcciones en las que estoy pensando son obtener el MAC de la tarjeta de red y otra información de esta naturaleza que identificará la máquina que visita el sitio web.
javascript
cookies
browser
eso es valioso
fuente
fuente
Respuestas:
Estas personas han desarrollado un método de huellas digitales para reconocer a un usuario con un alto nivel de precisión:
https://panopticlick.eff.org/static/browser-uniqueness.pdf
fuente
Introducción
No sé si existe o alguna vez habrá una manera de identificar máquinas de manera única utilizando solo un navegador. Las razones principales son:
Incluso si hay formas de rastrear una computadora sin usar cookies, siempre habrá una forma de evitarla y un software que lo hará automáticamente. Si realmente necesita rastrear algo basado en una computadora, tendrá que escribir una aplicación nativa (Apple Store / Android Store / Windows Program / etc).
Es posible que no pueda darle una respuesta a la pregunta que hizo, pero puedo mostrarle cómo implementar el seguimiento de la sesión. Con el seguimiento de sesión, intenta realizar un seguimiento de la sesión de navegación en lugar de que la computadora visite su sitio. Al rastrear la sesión, el esquema de su base de datos se verá así:
Ventajas del seguimiento basado en sesión:
username
/password
/email
.sessionID
.Desventajas del seguimiento basado en sesión:
Implementación
Hay muchas formas de implementar esto. No creo que pueda cubrirlos a todos, solo enumeraré mi favorito, lo que haría que esta sea una respuesta obstinada . Tenlo en cuenta.
Lo esencial
Seguiré la sesión usando lo que se conoce como una cookie para siempre. Estos son datos que se recrearán automáticamente incluso si el usuario elimina sus cookies o actualiza su navegador. Sin embargo, no sobrevivirá al usuario eliminando sus cookies y su caché de navegación.
Para implementar esto, utilizaré el mecanismo de almacenamiento en caché de los navegadores ( RFC ), la API de WebStorage ( MDN ) y las cookies del navegador ( RFC , Google Analytics ).
Legal
Para utilizar identificadores de seguimiento, debe agregarlos tanto a su política de privacidad como a sus términos de uso, preferiblemente bajo el subtítulo Seguimiento . Utilizaremos las siguientes teclas en ambos
document.cookie
ywindow.localStorage
:Asegúrese de incluir enlaces a su Política de privacidad y términos de uso en todas las páginas que usan seguimiento
¿Dónde guardo los datos de mi sesión?
Puede almacenar los datos de su sesión en la base de datos de su sitio web o en la computadora del usuario. Como normalmente trabajo en sitios más pequeños (deje que más de 10 mil conexiones continuas) que usen aplicaciones de terceros (Google Analytics / Clicky / etc.), es mejor para mí almacenar datos en la computadora del cliente. Esto tiene las siguientes ventajas:
y desventajas:
UUIDS
Browser|BrowserVersion|OS|OSVersion|Processor|MozzilaMajorVersion|GeckoMajorVersion
getISP(requestIP)|getHTTPSClientKey()
FingerPrint.get()
BrowserID|ComputerID|randombytes(256)
__utma
cookies.getCookie(__utma).uniqueid
Mecanismo
El otro día estaba viendo el show de Wendy Williams con mi novia y estaba completamente horrorizado cuando el anfitrión le aconsejó a sus espectadores que eliminaran el historial de su navegador al menos una vez al mes. Eliminar el historial del navegador normalmente tiene los siguientes efectos:
window.localStorage
(aww man).La mayoría de los navegadores modernos hacen que esta opción esté fácilmente disponible, pero no temas a tus amigos. Porque hay una solución. El navegador tiene un mecanismo de almacenamiento en caché para almacenar secuencias de comandos / imágenes y otras cosas. Por lo general, incluso si eliminamos nuestro historial, este caché del navegador aún permanece. Todo lo que necesitamos es una forma de almacenar nuestros datos aquí. Hay 2 métodos para hacer esto. La mejor es usar una imagen SVG y almacenar nuestros datos dentro de sus etiquetas. De esta manera, los datos aún se pueden extraer incluso si JavaScript está deshabilitado con flash. Sin embargo, dado que es un poco complicado, demostraré el otro enfoque que usa JSONP ( Wikipedia )
example.com/assets/js/tracking.js (realmente tracking.php)
Ahora podemos obtener nuestra clave de sesión en cualquier momento:
window.__sid || window.localStorage.getItem("sid") || getCookie("sid") || ""
¿Cómo hago que tracking.js se pegue en el navegador?
Podemos lograr esto usando los encabezados HTTP Cache-Control , Last-Modified y ETag . Podemos usar el
SessionID
valor as para el encabezado etag:Last-Modified
El encabezado le dice al navegador que este archivo básicamente nunca se modifica.Cache-Control
le dice a los proxies y gateways que no almacenen en caché el documento, pero le dice al navegador que lo guarde en caché durante 1 año.La próxima vez que el navegador solicite el documento, lo enviará
If-Modified-Since
y losIf-None-Match
encabezados. Podemos usar estos para devolver una304 Not Modified
respuesta.example.com/assets/js/tracking.php
Ahora, cada vez que el navegador solicite,
tracking.js
nuestro servidor responderá con un304 Not Modified
resultado y forzará una ejecución de la copia local detracking.js
.Aún no lo entiendo. Explícamelo
Supongamos que el usuario borra su historial de navegación y actualiza la página. Lo único que queda en la computadora del usuario es una copia de la
tracking.js
memoria caché del navegador. Cuando el navegador lo solicitatracking.js
, recibe una304 Not Modified
respuesta que hace que ejecute la primera versióntracking.js
recibida.tracking.js
ejecuta y restaura loSessionID
que fue eliminado.Validación
Supongamos que Haxor X roba las cookies de nuestros clientes mientras todavía están conectados. ¿Cómo los protegemos? Criptografía y huellas digitales del navegador al rescate. Recuerde que nuestra definición original
SessionID
era:Podemos cambiar esto a:
Donde
hk = sign(Timestamp|BrowserID|ComputerID, serverKey)
.Ahora podemos validar nuestro
SessionID
uso del siguiente algoritmo:Ahora para que el ataque de Haxor funcione, deben:
ComputerID
. Eso significa que tienen que tener el mismo proveedor de ISP que víctima (Tricky). Esto le dará a nuestra víctima la oportunidad de emprender acciones legales en su propio país. Haxor también debe obtener la clave de sesión HTTPS de la víctima (Hard).BrowserID
. Cualquiera puede falsificar la cadena de agente de usuario (molesto).SessionID
(Muy difícil). Los ataques de volumen no funcionarán porque usamos una marca de tiempo para generar la clave de cifrado / firma, así que básicamente es como generar una nueva clave para cada sesión. Además de eso, ciframos bytes aleatorios, por lo que un simple ataque de diccionario también está fuera de discusión.Podemos mejorar la validación mediante el reenvío
GoogleID
yFingerprintID
(a través de ajax o campos ocultos) y la comparación con esos.fuente
storageFacade.setItem
y storageFacade.getItem. And it tries to use localStorage, but fallsback to your technique when disabled. ..Perhaps the way it works is via a single file for "diffs" i.e. each time you call
setItem. And then a
manifest` de todos los diffs creados durante la sesión que se crean automáticamente de vez en cuando.No es posible identificar las computadoras que acceden a un sitio web sin la cooperación de sus propietarios. Sin embargo, si se lo permiten, puede almacenar una cookie para identificar la máquina cuando vuelva a visitar su sitio. La clave es que el visitante tiene el control; pueden eliminar la cookie y aparecer como un nuevo visitante en cualquier momento que lo deseen.
fuente
Una posibilidad es usar cookies flash :
Tendrá que construir una pequeña película flash (oculta) para leerla y escribirla.
Cualquiera sea la ruta que elija, asegúrese de que sus usuarios opten por ser rastreados, de lo contrario, está invadiendo su privacidad y se convierte en uno de los malos.
fuente
Adobe announced that Flash Player 10.3 enables Mozilla Firefox 4 and "future releases of Apple Safari and Google Chrome" to delete local shared objects,[11] so since version 4, Firefox treats LSOs the same way as HTTP cookies - deletion rules that previously applied only to HTTP cookies now also apply to LSOs.
Es posible que desee intentar configurar una ID única en un evercookie (funcionará en varios navegadores, consulte sus preguntas frecuentes): http://samy.pl/evercookie/
También hay una compañía llamada ThreatMetrix que utilizan muchas grandes compañías para resolver este problema: http://threatmetrix.com/our-solutions/solutions-by-product/trustdefender-id/ Son bastante caras y algunas de sus otros productos no son muy buenos, pero su identificación de dispositivo funciona bien.
Finalmente, existe esta implementación jquery de código abierto de la idea de panóptico: https://github.com/carlo/jquery-browser-fingerprint Parece bastante a medias en este momento, pero podría ampliarse.
¡Espero eso ayude!
fuente
Click to rediscover cookies
y vea nulo o indefinido. Así que esto no funciona para míExiste un método popular llamado huella digital de lienzo, descrito en este artículo científico: La Web nunca olvida: mecanismos de seguimiento persistente en la naturaleza . Una vez que empiece a buscarlo, se sorprenderá de la frecuencia con que se usa. El método crea una huella digital única, que es consistente para cada combinación de navegador / hardware.
El artículo también revisa otros métodos de seguimiento persistente, como evercookies, reaparición de cookies http y Flash, y sincronización de cookies.
Más información sobre huellas digitales en lienzo aquí:
fuente
Solo hay una pequeña cantidad de información que puede obtener a través de una conexión HTTP.
IP - Pero como han dicho otros, esto no se soluciona para muchos, si no para la mayoría de los usuarios de Internet, debido a las políticas de asignación dinámica de su ISP.
Cadena Useragent: casi todos los navegadores envían qué tipo de navegador son con cada solicitud. Sin embargo, esto puede ser configurado por el usuario en muchos navegadores hoy.
Colección de campos de solicitud: se envían otros campos con cada solicitud, como codificaciones compatibles, etc. Estos, si se usan en conjunto, pueden ayudar a identificar la máquina de un usuario, pero nuevamente dependen del navegador y se pueden cambiar.
Cookies: la configuración de una cookie es otra forma de identificar una máquina, o más específicamente un navegador en una máquina, pero como han dicho otros, los usuarios pueden eliminarla o desactivarla, y solo son aplicables en un navegador, no en un máquina.
Entonces, la respuesta correcta es que no puede lograr lo que viviría a través de los protocolos HTTP sobre IP solo. Sin embargo, al usar una combinación de cookies, así como IP, y los campos en la solicitud HTTP, tiene una buena oportunidad de adivinar, más o menos, qué máquina es. Los usuarios tienden a usar solo un navegador, y a menudo desde una máquina, por lo que esto puede ser bastante confiable, pero esto variará dependiendo de la audiencia ... los técnicos son más propensos a meterse con estas cosas y usar más máquinas / navegadores. Además, esto podría incluso combinarse con algún intento de ubicar geográficamente la IP y utilizar esos datos también. Pero en cualquier caso, no hay una solución que sea correcta todo el tiempo.
fuente
Hay fallas con los enfoques de cookies y no cookies. Pero si puede perdonar las deficiencias del enfoque de cookies, aquí hay una idea.
Si ya está utilizando Google Analytics en su sitio, entonces no necesita escribir código para rastrear usuarios únicos. Google Analytics lo hace por usted a través del
__utma
valor de la cookie, como se describe en la documentación de Google . Y al reutilizar este valor no está creando una carga útil adicional de cookies, lo que tiene beneficios de eficiencia con las solicitudes de página.Y podría escribir un código lo suficientemente fácil como para acceder a ese valor, o utilizar la
getUniqueId()
función de este script .fuente
getUniqueId()
diferentes navegadores en la misma máquina?Al igual que con las soluciones anteriores, las cookies son un buen método, tenga en cuenta que identifican los navegadores . Si visitara un sitio web en Firefox y luego en Internet Explorer, las cookies se almacenarían por separado para ambos intentos. Algunos usuarios también deshabilitan las cookies (pero más personas deshabilitan JavaScript).
Otro método a tener en cuenta sería la identificación de IP y nombre de host (tenga en cuenta que estos pueden variar para usuarios de acceso telefónico / IP no estático, AOL también utiliza IPs generales). Sin embargo, dado que esto solo identifica redes, podría no funcionar tan bien como las cookies.
fuente
Dejando de lado las sugerencias para usar cookies, el único conjunto completo de atributos de identificación disponibles para interrogar está contenido en el encabezado de solicitud HTTP. Por lo tanto, es posible utilizar algún subconjunto de estos para crear un identificador pseudo-único para un agente de usuario (es decir, navegador). Además, la mayor parte de esta información posiblemente ya esté registrada en el llamado "registro de acceso" de su software de servidor web de forma predeterminada y, si no, puede configurarse fácilmente para hacerlo. Luego, se podría desarrollar una utilidad que simplemente escanee el contenido de este registro, creando huellas digitalesde cada solicitud compuesta, por ejemplo, la dirección IP y la cadena del Agente de usuario, etc. Cuantos más datos estén disponibles, incluso el contenido de cookies específicas, se suma a la calidad de la singularidad de esta huella digital. Sin embargo, como muchos otros ya han dicho, el protocolo HTTP no lo hace 100% infalible; en el mejor de los casos, solo puede ser un indicador bastante bueno.
fuente
Este es un tipo de autenticación bastante común utilizado por los bancos.
Digamos que está accediendo al sitio web de su banco a través de example-isp.com. La primera vez que esté allí, se le pedirá su contraseña, así como la autenticación adicional. Una vez que haya aprobado, el banco sabe que el usuario "thatisvaliant" está autenticado para acceder al sitio mediante example-isp.com.
En el futuro, no solicitará autenticación adicional (más allá de su contraseña) cuando acceda al sitio a través de example-isp.com. Si intenta acceder al banco a través de another-isp.com, el banco volverá a seguir la misma rutina.
Para resumir, lo que el banco identifica es su ISP y / o netblock, según su dirección IP. Obviamente, no todos los usuarios de su ISP son usted, por lo que el banco aún le solicita su contraseña.
¿Alguna vez ha llamado a una compañía de tarjetas de crédito para verificar que todo esté bien cuando usa una tarjeta de crédito en un país diferente? Mismo concepto
fuente
Realmente, lo que quieres hacer no se puede hacer porque los protocolos no lo permiten. Si las IP estáticas se usaran universalmente, entonces podría hacerlo. No lo son, así que no puedes.
Si realmente quieres identificar personas , sesión.
Dado que probablemente se moverán a diferentes páginas de su sitio web, necesita una forma de realizar un seguimiento de ellas a medida que se mueven.
Mientras estén conectados, y usted esté rastreando su sesión dentro de su sitio a través de cookies / parámetros de enlace / balizas / lo que sea, puede estar bastante seguro de que están usando la misma computadora durante ese tiempo.
En última instancia, es incorrecto decir que esto le indica qué computadora están usando si sus usuarios no están usando su propia red local y no tienen direcciones IP estáticas.
Si lo que desea hacer es hacerlo con la cooperación de los usuarios y solo hay un usuario por cookie y ellos usan un solo navegador web, simplemente use una cookie.
fuente
Las cookies no serán útiles para determinar visitantes únicos. Un usuario puede borrar las cookies y actualizar el sitio; luego se lo clasifica como un nuevo usuario nuevamente.
Creo que la mejor manera de hacerlo es implementar una solución del lado del servidor (ya que necesitará un lugar para almacenar sus datos). Dependiendo de la complejidad de sus necesidades de dichos datos, deberá determinar qué se clasifica como una visita única. Un método sensato sería permitir que una dirección IP regrese al día siguiente y recibir una visita única. Varias visitas de una dirección IP en un día no deben contarse como únicas.
Usando PHP, por ejemplo, es trivial obtener la dirección IP de un visitante y almacenarla en un archivo de texto (o una base de datos sql).
Una solución del lado del servidor funcionará en todas las máquinas, porque va a rastrear al usuario cuando cargue su sitio por primera vez. No use javascript, ya que está destinado a las secuencias de comandos del lado del cliente, además el usuario puede haberlo deshabilitado en cualquier caso.
Espero que ayude.
fuente
¿No es una muy buena razón para no para usar JavaScript?
Como han dicho otros, las cookies son probablemente su mejor opción, solo tenga en cuenta las limitaciones.
fuente
Puedes usar fingerprintjs2
Después de eso, puede verificar a todos sus usuarios contra los existentes y verificar la similitud de JSON, por lo que incluso si su huella digital muta, aún puede rastrearlos
fuente
Supongo que el veredicto es que no puedo identificar programáticamente de manera única una computadora que está visitando mi sitio web.
Tengo la siguiente pregunta. Cuando uso una máquina que nunca ha visitado mi sitio web de banca en línea, se me solicita una autenticación adicional. luego, si vuelvo por segunda vez al sitio de banca en línea, no se me solicita la autenticación adicional. Al leer las respuestas a mi pregunta, decidí que debía tratarse de una cookie. por lo tanto, eliminé todas las cookies en IE y volví a iniciar sesión en mi sitio de banca en línea, esperando que me volvieran a hacer las preguntas de autenticación. para mi sorpresa no me preguntaron. ¿Esto no lleva a creer que el banco está haciendo algún tipo de etiquetado de PC que no involucra cookies?
Además, después de mucho buscar en Google hoy, encontré la siguiente compañía que afirma vender una solución que identifica de forma única las máquinas que visitan un sitio web. http://www.the41.com/products.asp .
Agradezco toda la buena información si pudiera aclarar más esta información conflictiva que encontré, la agradecería enormemente.
fuente
Lo haría usando una combinación de cookies y cookies flash. Cree un GUID y guárdelo en una cookie. Si la cookie no existe, intente leerla desde la cookie flash. Si aún no se encuentra, créelo y escríbalo en la cookie flash. De esta manera, puede compartir el mismo GUID en todos los navegadores.
fuente
Creo que las cookies pueden ser lo que estás buscando; así es como la mayoría de los sitios web identifican de manera única a los visitantes.
fuente
Suponiendo que no desea que el usuario tenga el control, no puede. La web no funciona así, lo mejor que puede esperar son algunas heurísticas.
Si es una opción para obligar a su visitante a instalar algún software y usar TCPA, puede lograr algo.
fuente
Es posible que mi publicación no sea una solución, pero puedo proporcionar un ejemplo en el que se ha implementado esta característica.
Si visitas la página de registro de
www.supertorrents.org
por primera vez desde su computadora, está bien. Pero si actualiza la página o la abre de nuevo, identifica que ha visitado la página anteriormente. La verdadera belleza viene aquí: se identifica incluso si reinstalas Windows u otro sistema operativo.Leí en alguna parte que almacenan la ID de la CPU. Aunque no pude encontrar cómo lo hacen, lo dudo seriamente, y podrían usar la dirección MAC para hacerlo.
Definitivamente compartiré si encuentro cómo hacerlo.
fuente
Un truco:
Crear 2 páginas de registro:
Primera página de registro: sin correo electrónico ni verificación de seguridad (solo con nombre de usuario y contraseña)
Segunda página de registro: con alto nivel de seguridad (solicitud de verificación de correo electrónico e imagen de seguridad, etc.)
Para satisfacción del cliente y un registro fácil, la página de registro predeterminada debe ser la (Primera página de registro) pero en la (Primera página de registro) hay una restricción oculta. Es Restricción de IP. Si una IP intentó registrarse por segunda vez (por ejemplo, menos de 1 hora) en lugar de mostrar la página de bloqueo. puede mostrar la (Segunda página de registro) automáticamente.
Tenga en cuenta: (Primera página de registro) y (Segunda página de registro) no deben estar en páginas separadas. haces solo 1 página. (por ejemplo: register.php) y haga que sea inteligente cambiar entre First PHP Style y Second PHP Style
fuente