Как убедиться, что GPS-координаты, отправленные на сервер, точны? - PullRequest
4 голосов
/ 17 августа 2010

вот моя проблема:

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

Я имею в виду, скажем, клиент использует запрос к серверу через http:

http://www.myserver.com/getdata?lat=X&long=Y

злоумышленник может легкоизмените значения.
Тогда как убедиться, что значения точны?

Ответы [ 4 ]

1 голос
/ 17 августа 2010

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

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

Надеюсь, что это даст вам некоторые идеи ...

С другой стороны, вы можете выдать хеш при первом контакте с сервером (аутентификация или что-то в этом роде) и использовать простую математику в своем мобильном приложении: x your_hash и y your_hash или что-то в этом роде (должно быть сложнее, так как легко догадаться) затем на сервере: http://www.myserver.com/getdata?lat=x&lon=y затем: на стороне сервера приложения: lat = lat / your_hash lon = lon / your_hash теперь, если широта / долгота находится вне сетки, как сказал где-то в море ДжохенДжунг ... вы можете игнорировать запрос. и просто потому, что вы хотите определить, какой пользователь отправил запрос, вам потребуется некоторая идентификация в строке запроса, которую можно использовать в качестве дополнительной переменной для получения лучшего результата.

1 голос
/ 17 августа 2010

Вы не можете.Как вы уже поняли, клиент всегда может манипулировать запросами, отправленными на сервер.

Единственное, что вы можете сделать на стороне сервера, это отфильтровать маловероятные координаты (например, на море, в зависимости от значенияваши координаты).

0 голосов
/ 17 августа 2010

Я думал об одном и том же, но боюсь, что это невозможно.Вот некоторые идеи, которые у меня были:

  • Добавьте к запросу какой-то хэш координат, который вы также можете проверить на стороне сервера.Это требует, чтобы клиент знал об алгоритме шифрования (и ключе) и снова делает его взломанным
  • Проверьте, позволяет ли промежуток времени между предыдущим запросом и теперь таким изменением местоположения.Довольно сложно, потому что вы никогда не узнаете, не был ли первый запрос мошенничеством, и вы не знаете, какой вид транспорта может использовать клиент
0 голосов
/ 17 августа 2010

Кто-то может обмануть / обмануть телефон, установив GPS-координаты в другое место. Как говорит @JochenJung, запрос всегда можно изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...