Есть ли способ проверить данные о местоположении GPS, полученные от клиента?

9

Ответ на этот вопрос может быть «НЕТ», но это очень важно, поэтому я думаю, что я мог бы также спросить.

Это должно быть проблемой для всех игр, ориентированных на клиент-сервер, где местоположения игроков в мире являются центральными для игрового процесса. Можно ли каким-то образом убедиться, что данные о местоположении, поступающие от клиента, являются реальными (то есть, игрок на самом деле там)?

Работая над клиент-серверными играми, мы все знаем, что мы никогда не должны доверять какой-либо информации, поступающей от клиента, и поэтому вся важная логика игры должна выполняться на стороне сервера. Однако, с информацией о местоположении, мы ДОЛЖНЫ получить это от клиента. Есть ли способ перепроверить это, чтобы предотвратить обман?

Jamornh
источник

Ответы:

10

Вы можете использовать службу геолокации IP для получения приблизительного местоположения, откуда пользователь подключается. Сравните это с полученными данными GPS, и вы сможете отсеять некоторые крайние случаи (игроки подключаются через прокси и т. Д.). Вы даже можете рассчитать расстояния между логинами пользователей и, если они слишком велики (скажем, местоположение переместилось на 1000 км между двумя попытками входа в систему за 5 или 10 минут), уведомить пользователя.

Однако это не является надежной защитой, и вы допустите более одного неудобства для законных игроков.

r2d2rigo
источник
Спасибо, я думаю, что я посмотрю на проверку IP, а также дельту местоположения между входами в систему / проверками с сервером. Это определенно вызовет проблемы у законных игроков, если мы будем полагаться на автоматическое обнаружение и запреты ... Я думаю, что я просто пометю это для проверки администратором и предоставлю некоторые щедрые ограничения; мы, вероятно, будем разбираться с каждым флагом в каждом конкретном случае (надеясь, что цифры достаточно малы, чтобы это было практичным).
Jamornh
GeoLocation довольно точный; у вас не должно быть никаких проблем ... в зависимости от гранулярности, которую вы хотите.
Вон Хилтс
10

На стороне клиента нет ничего, что нельзя было бы подделать, все, к кому у кого есть физический доступ, можно манипулировать.

IP содержит информацию о маршрутизации и, таким образом, указывает на местоположение. Но игроку просто нужен прокси и упс ... IP указывает на совершенно другое местоположение, чем на самом деле игрок.

Доверяйте своим игрокам, не дайте им повода попытаться обмануть систему.

API-Beast
источник
Я согласен с тем, чтобы доверять игроку и не давать им никаких оснований для обмана системы. Должно быть удобнее следить за системой, чтобы чего-то достичь, чем тратить время на то, чтобы обмануть ее и сделать то же самое. Но некоторые игроки всегда найдут причину делать то, что им не по назначению, ну, я надеюсь, что это число будет крайне низким, если система разработана хорошо.
Джаморн
3

Вы не можете действительно проверить эту информацию, так же как вы не можете действительно проверить любую информацию, созданную внешним источником. То, что вы хотите, теоретически невозможно. Но вы, вероятно, можете сделать это немного сложнее, чтобы подделать.

Например, на телефонах Android у вас есть разные провайдеры определения местоположения , такие как определение местоположения пользователя с помощью соседних мачт сотовых телефонов, система определения местоположения Wi-Fi и т. Д. Вы можете потребовать, чтобы как минимум два провайдера определения местоположения возвращали одинаковые значения, чтобы доверять более точным из двух.

Я бы не рекомендовал использовать геолокацию IP; здесь, в Великобритании, это безнадежно неточно, поскольку большинство из нас используют национальных интернет-провайдеров. В хороший день объявления с геотаргетингом относятся к местам на расстоянии около 20 миль, а в плохой день они думают, что я на расстоянии 100 миль. Но вы, вероятно, можете использовать его, чтобы убедиться, что пользователь находится в нужной стране!

Kylotan
источник
Спасибо за этот ответ. Когда вы ссылаетесь на «провайдеров местоположения», я предполагаю, что вы говорите об API определения местоположения Android и о том, какое оборудование оно использует для вычисления местоположения. Это может немного усложнить человеку, пытающемуся подделать местоположение (необходимо предоставить 2-3 значения вместо 1), но, поскольку они в любом случае предоставляют поддельные значения, это не должно создавать излишней дополнительной работы для обхода (предоставить дополнительные поддельные значения.) Полностью согласен с вашей точкой зрения на геолокацию IP, недостаточно детализирован, но хорош для грубой проверки :) Спасибо за помощь!
Jamornh
Да, нет абсолютно никакого способа остановить сообщение о поддельных значениях от клиента - все, что вы можете сделать, это надеяться, что это затруднит.
Kylotan