¿Hay alguna forma de verificar los datos de ubicación GPS recibidos del cliente?

9

La respuesta a esta pregunta puede ser "NO", pero es bastante importante, así que creo que podría preguntar.

Esto debería ser un problema para todos los juegos conscientes de la ubicación del cliente-servidor donde las ubicaciones de los jugadores en el mundo son centrales para el juego. ¿Hay alguna manera de asegurarnos de que los datos de ubicación que provienen del cliente sean reales (es decir, el reproductor está realmente allí)?

Al trabajar en juegos cliente-servidor, todos sabemos que nunca debemos confiar en ninguna información proveniente del cliente y, por lo tanto, toda la lógica importante del juego debe hacerse del lado del servidor. Sin embargo, con la información de ubicación, DEBEMOS recibirla del cliente. ¿Hay alguna manera de verificar esto para evitar trampas?

Jamornh
fuente

Respuestas:

10

Puede usar un servicio de geolocalización IP para obtener una ubicación aproximada desde donde se conecta el usuario. Compare esto con los datos GPS recibidos y puede eliminar algunos casos extremos (jugadores que se conectan a través de proxy, etc.). Incluso puede calcular las distancias entre los inicios de sesión de los usuarios y si son demasiado altos (por ejemplo, la ubicación se movió 1000 kms entre dos intentos de inicio de sesión en 5 o 10 minutos) notifique al usuario.

Sin embargo, esto no es infalible y causarás más de un inconveniente a los jugadores legítimos.

r2d2rigo
fuente
Gracias, creo que examinaré el control de IP y el delta de ubicación entre inicios de sesión / registros con el servidor. Definitivamente va a causar problemas a los jugadores legítimos si confiamos en la detección automática y las prohibiciones ... Creo que lo marcaré para revisión administrativa y daré algunos límites generosos; Probablemente nos ocuparemos de cada bandera caso por caso (con la esperanza de que los números sean lo suficientemente bajos como para que sea práctico).
Jamornh
GeoLocation es bastante preciso; no deberías tener ningún problema ... dependiendo de la granularidad que desees.
Vaughan Hilts
10

No hay nada en el lado del cliente que no pueda ser falsificado, todo lo que alguien tiene acceso físico puede ser manipulado.

La IP contiene información de enrutamiento y, por lo tanto, insinúa la ubicación. Pero el jugador solo necesita un proxy y grita ... la IP sugiere una ubicación completamente diferente a la del jugador.

Confía en tus jugadores, no les des una razón para intentar engañar al sistema en primer lugar.

API-Bestia
fuente
Estoy de acuerdo con confiar en el jugador y no darles ninguna razón para engañar al sistema. Debería ser más conveniente seguir el sistema para lograr algo que tomarse el tiempo para engañarlo para que haga lo mismo. Pero algunos jugadores siempre encontrarán una razón para hacer cosas que no deben hacer, ah bueno, espero que ese número sea extremadamente bajo si el sistema está bien diseñado.
Jamornh
3

Realmente no puede verificar esta información más de lo que realmente puede verificar cualquier información creada por una fuente externa. Entonces, lo que quieres es teóricamente imposible. Pero probablemente puedas hacer que sea un poco más difícil fingir.

Por ejemplo, en teléfonos Android tienes varios proveedores de ubicación , como ubicar a un usuario en los mástiles de teléfonos celulares cercanos, el sistema de posición Wi-Fi, etc. Podría requerir que al menos dos proveedores de ubicación devuelvan valores similares para confiar en los más precisos. de los dos.

No recomendaría usar la geolocalización de IP; aquí en el Reino Unido es irremediablemente inexacto ya que la mayoría de nosotros usamos ISP nacionales. En un buen día, los anuncios orientados geográficamente se refieren a ubicaciones a unas 20 millas de distancia, y en un mal día piensan que estoy a 100 millas de distancia. ¡Pero probablemente pueda usarlo para verificar que el usuario esté en el país correcto!

Kylotan
fuente
Gracias por esta respuesta Cuando se refiere a "proveedores de ubicación", supongo que está hablando de la API de ubicación de Android y qué hardware está utilizando para calcular la ubicación. Haría que sea un poco más difícil para la persona que intenta falsificar la ubicación (tener que proporcionar 2-3 valores en lugar de 1), pero dado que de todos modos están proporcionando valores falsos, esto no debería suponer mucho trabajo adicional para ellos. valores falsos adicionales.) Totalmente de acuerdo con su punto de geolocalización de IP, no lo suficientemente granular pero bueno para una verificación aproximada :) ¡Gracias por la ayuda!
Jamornh el
Sí, no hay absolutamente ninguna manera de detener el informe de valores falsos de un cliente; todo lo que puede hacer es esperar que sea difícil.
Kylotan
1

No, no hay manera. Ni siquiera en teoría.

ddyer
fuente