Existe alguma maneira de verificar os dados de localização GPS recebidos do cliente?

9

A resposta a esta pergunta pode ser "NÃO", mas é muito importante, então acho que devo perguntar.

Isso deve ser um problema para todos os jogos com reconhecimento de local do cliente-servidor, onde os locais de jogadores no mundo são centrais para a jogabilidade. Existe alguma maneira de garantir que os dados de localização provenientes do cliente sejam reais (ou seja, o player está realmente lá)?

Trabalhando em jogos cliente-servidor, todos sabemos que nunca devemos confiar em nenhuma informação proveniente do cliente e, portanto, toda lógica de jogo importante deve ser feita no servidor. No entanto, com informações de localização, DEVEMOS receber isso do cliente. Existe uma maneira de verificar isso para evitar trapaças?

Jamornh
fonte

Respostas:

10

Você pode usar um serviço de localização geográfica IP para obter uma localização aproximada de onde o usuário está se conectando. Compare isso com os dados de GPS recebidos e você pode eliminar alguns casos extremos (players conectando através de proxy, etc). Você pode até calcular distâncias entre logins do usuário e, se forem muito altas (por exemplo, o local se moveu 1000 km entre duas tentativas de login em 5 ou 10 minutos), notifique o usuário.

No entanto, isso não é infalível e você causará mais de um inconveniente para jogadores legítimos.

r2d2rigo
fonte
Obrigado, acho que examinarei a verificação de IP e o delta da localização entre logins / check-ins com o servidor. Definitivamente, isso causará problemas para jogadores legítimos se confiarmos na detecção e proibições automáticas ... Acho que vou sinalizá-lo para análise do administrador e fornecer limites generosos; provavelmente vamos lidar com cada bandeira em uma base caso a caso (esperando que os números são baixos o suficiente para que isso seja prático.)
Jamornh
A localização geográfica é bastante precisa; você não deve ter nenhum problema ... dependendo da granularidade que deseja.
precisa saber é o seguinte
10

Não há nada do lado do cliente que não possa ser falsificado; tudo o que alguém tem acesso físico pode ser manipulado.

O IP contém informações de roteamento e, portanto, sugere o local. Mas o jogador só precisa de um proxy e gritos ... o IP sugere um local completamente diferente do que o jogador realmente é.

Confie nos seus jogadores, não dê a eles um motivo para tentar enganar o sistema em primeiro lugar.

API-Beast
fonte
Eu concordo em confiar no jogador e não dar a ele motivo para enganar o sistema. Deve ser mais conveniente seguir o sistema para obter algo do que gastar tempo para enganá-lo e fazer a mesma coisa. Mas alguns jogadores sempre encontrarão um motivo para fazer coisas que não devem, ah, espero que esse número seja extremamente baixo se o sistema for bem projetado.
Jamornh
3

Você não pode realmente verificar essas informações da mesma forma que não pode verificar verdadeiramente qualquer informação criada por uma fonte externa. Então, o que você quer é teoricamente impossível. Mas você provavelmente pode dificultar um pouco a falsificação.

Por exemplo, em telefones Android, você tem vários provedores de localização , como localizar um usuário pelos mastros de celulares próximos, pelo sistema de posição Wi-Fi etc. Você pode exigir que pelo menos dois provedores de localização retornem valores semelhantes para confiar nos mais precisos dos dois.

Eu não recomendaria o uso de geolocalização IP; aqui no Reino Unido, é irremediavelmente impreciso, pois a maioria de nós usa ISPs nacionais. Em um bom dia, os anúncios segmentados por área geográfica referem-se a locais a cerca de 32 quilômetros de distância e, em um dia ruim, eles acham que eu estou a 160 quilômetros de distância. Mas você provavelmente pode usá-lo para verificar se o usuário está no país certo!

Kylotan
fonte
Obrigado por esta resposta. Quando você se refere a "provedores de localização", presumo que você esteja falando da API de localização do Android e qual hardware ele está usando para calcular a localização. Isso tornaria um pouco mais difícil para a pessoa que tenta falsificar o local (tendo que fornecer 2-3 valores em vez de 1), mas como eles estão fornecendo valores falsos de qualquer maneira, isso não deve representar muito trabalho adicional para contornar (fornecer valores falsos adicionais.) Concordo totalmente com o seu ponto de localização geográfica de IP, não granular o suficiente, mas bom para verificação aproximada :) Obrigado pela ajuda!
Jamornh
Sim, não há absolutamente nenhuma maneira de interromper a comunicação de valores falsos de um cliente - tudo o que você pode fazer é esperar que isso seja difícil.
Kylotan
1

De jeito nenhum. Nem mesmo na teoria.

ddyer
fonte