¡La pregunta del millón! 1 Solo acceso

Kaos

Estoy desarrollando un proyecto en PHP y SQL. Lleva un sistema de registro de usuarios y no puedo permitir 2 accesos desde la misma IP.

Digamos que quiero evitar las multicuentas.

Ejemplo que quiero evitar:
Fulanito se registra con el nombre A. Luego se registra con el nombre B.
Ahora accede a la Web con el nombre A y a la misma vez, con el nombre B.

Hay forma de evitar esto? no le encuentro la manera :\ y mira q le doy vueltas.

El proyecto en cuestión es un juego online, no sé como lo hará Ogame y otros, si es q lo hacen :O

NeB1

$_SERVER['HTTP_CLIENT_IP'];

ahí tienes la ip de quien se ha registrado, la guardas en la base de datos:

usuario | password | IP

Kaos

Si y si tiene IP dinámica o la cambia, no vuelve o q...

eXtreM3

Ogame utiliza php y supongo que guarda las ips como te ha dicho #2, pero ellos no restringen el acceso, simplemente lo guardan y si luego hay varios accesos con la misma ip, ban.

Edito: para #3, pues guardas también la fecha en la que se loguea y yasta.

Kaos

#4 y si usas un tunel IP como este http://www.pimpmyip.org/ ? :D Esa medida tampoco es tan funcional. Puedes abrir sesión, meterte en esa web y abrir otra sesión.

:P

dagavi

Hablando desde la inexperiencia, en el momento en el que tengas en cuenta las IP's dinámicas todo se va al traste, ya que se puede dar toda combinación.

Desde que una persona acceda con varias IP's y sea "legítimo" (puede cambiar la IP, ya sea queriendo o sin querer porque se le desconecte por problemas de línea), hasta que una IP acceda a varias cuentas (NAT / otra persona que le ha sido concedida la IP).

Y si una persona física se conecta desde 2 lados pues supongo que puedes ir olvidándote, ya que yo puedo conectarme aquí e irme a casa del vecino y conectarme con otra cuenta, tu no sabes si soy yo o el vecino. (es decir, el login/registro de cuentas desde IP's diferentes debería ser siempre válido)

Vamos, podrías intentar hacer cosas que puedan intentar detectar casos sospechosos, pero en ningún momento podrás asegurar del todo y dependiendo de que políticas apliques incluso podrías joder a usuarios legítimos.

S

Respuesta corta.

  1. No puedes evitarlo.

Respuesta larga.

Las web lo que suelen hacer es una combinación de factores para determinar si es el mismo equipo normalmente basadas tanto en la IP como en una cookie.

Las IPs son dinámicas, usar IPs para denegar acceso es muy poco fiable, ten en cuenta que se van renovando, hoy mi ip la puede tener mañana otro y él que nunca habría jugado puede estar baneado. Lo que si puedes hacer es denegar dos sesiones desde la misma IP a la vez.

Las cookies se pueden limpiar perfectamente desde el navegador, aunque no todos los usuarios se complican la vida haciéndolo.

En realidad no hay método para ésto que sea fiable, puedes ponerlo más difícil, pero si uno quiere lo hará. ¿Y si usa Tor? ¿Túneles IP? ¿Dos conexiones reales distintas (un sobremesa ADSL un portátil con 3G)? ¿Y si...? etc etc etc

NeB1

puedes meter en las cookies de cada persona, al final de todo una lista de ip's, las ips con las que ha entrado, si vuelve a entrar con otra ip, la añades a la lista. Además le metes en las cookies un identificador y au.

No tengo muy claro si serviría pero creo que algo se puede hacer...

thelegend

me imagino que también se podría negar cierta mac,no?

erdanblo

¿No te sirve la firma electrónica? Aun así, si yo consigo tu firma electrónica también podría acceder. Pero digamos que es más "complejo" (que no complicado).

Como dice #7 es totalmente imposible controlar eso.

guner

Quédate con lo que ha dicho #7, de impedir dos conexiones SIMULTANEAS desde la misma IP. Creo que es lo máximo que podrías hacer. Por otra parte, acompáñalo con cookies, pero las cookies, caducan.

haschatan

SI dos usuarios legitimos con sus dos cuentas distintias legitimas, se conectan desde la misma linea a traves de un router y aplicas alguna medida que impida dos sesiones simultaneas desde la misma IP uno de los dos no se puede logar ...

LOc0

Hasta que no se extienda el uso del DNIe chungo... Tienes varias chapuzas disponibles con sus ventajas e inconvenientes obvios:

1) Limitar a una cuenta por ordenador (obligando al usuario a que se baje una aplicación que calcule su hardware fingerprint).

2) Limitar a una cuenta por teléfono móvil y enviarle un código de activación por SMS.

Salu2 ;)

JuAn4k4

Lo del sms esta bien pero yo podria tener 5 cuentas.

Turco

¿Y si en vez de querer capar la ip lo que haces es capar la mac? Vamos, no se si se puede, pero sería un puntazo xD.

BLZKZ

#15 tal vez sea porque no sirve para nada la mac y que en el caso de poder controlarla (que no se si seria posible) puedes cambiarla a tu antojo en tu pc?

Turco

Digo yo que solunionarías el problema de la ip dinámica, ya que la mac es fija. Pero si, creo que hay programas que te permiten cambiar la mac.

dagavi

#15 Y en una que se conecten desde el exterior (otras redes, internet) ¿de donde saca la MAC?

La MAC es a nivel de enlace, no viaja a nivel de red ni superiores.

Soltrac

Como dice #18, la MAC está a otro nivel en el protocolo. Por mucho q la cambies, no importa si 2 pc's fuera de la misma red local comparten MAC.

Para #1, no hay manera 100% controlable.

Dod-Evers

Y si se meten dos desde el trabajo que salen todos por la misma ip pública?

erdanblo

#15 Burradas no, gracias.

Además, es mas probable que dos usuarios distintos tengan la misma MAC que coincidan con la misma IP.

#13 Tampoco hace falta que sea DNIe, sería lo ideal, que todo el mundo lo tuviese y todo el mundo tuviese el lector, cosa que no pasa (yo tengo el DNIe y no tengo lector, y pueden esperar sentado a que vaya a comprarlo). Pero como he dicho yo antes, firmas digitales, no tienen que ser las de la FNMT, también las puede crear él.

El problema, es que es un trabajo extra, ya que tienes que comprobar cada persona que se registre si es realmente ser la persona que dice ser.

SeiYa

Deberías guardar el historial de IP's desde las que se conecta un usuario y poder cotejar, poder decir, qué usuarios se han conectado desde esta ip ¿y desde esta? ¿y desde esta?

Lo que tu quieres es imposible porque ¿y si se registra desde otro ordenador? ¿y si comparten la red? ¿y si ...?

guner

Mira, leyéndo meneame me acordé de este hilo.

http://meneame.net/story/vas-borrar-cookies-tu-navegador-para-proteger-tu-privacidad-dos

PiradoIV

Lo suyo es hacer un combo de hacer un log de ip + usar cookies.

· El log de ip va con hora, si hay una ip con dos cuentas de usuario diferentes en el mismo minuto, se desloguea al usuario con más idle.

· Obligas a activar cookies en el navegador y en cada petición guardas la id de usuario que la ha hecho, si en la siguiente petición no coincide el usuario (a.k.a. lo ha hecho con otra cuenta), se le desloguea.

Más allá de eso... es complicarle la vida al jugador y no va a ser mucho más seguro.

Podrías también recopilar información mediante JavaScript de la máquina y, con todo lo que tengas, haces un hash md5 y compruebas que no esté ya online...

Kaos

puedes obligar a un usuario a usar cookies? :O
Eso si me parece una solución...

cabron

Obligar obligar... no es que puedas forzar su navegador a que acepte cookies, lo que puedes hacer es, en las páginas donde se supone que quieres controlar a los visitantes, si no hay cookie, redirigirles a la página principal con un mensaje de que las cookies tienen que estar activadas, así que si quiere navegar por tu web, no le quedará más remedio que activarlas, o también puede pasar de ti y no entrar más en la web.

suaveSHOW

Yo en mi página un metodo que he hecho, es que al registrarse en la web te cree una cookie y luego si se quiere volver a registrar se lo impido si el valor de la cookie es "1" (Se ha registrado) y cuando inicia sesion y la cierra tambien por si acaso borra las cookies o algo volver a activarla.

Usuarios habituales

  • Kaos
  • PiradoIV
  • guner
  • erdanblo
  • dagavi
  • Turco
  • NeB1