Проверка геолокации пользователя, когда пользователь публикует данные на веб-странице - PullRequest
2 голосов
/ 13 июля 2011

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

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

Возможно ли это?Какие методы проверки / подписания координат отправляются с клиента (веб-страницы) на сервер?Как бы вы поступили об этом?

В случае, если кому-то понадобится больше подробностей, сам веб-сайт будет приложением Ruby, а кнопка отправки формы просто выполняет вызов REST через POST для URL-адреса.

Ответы [ 2 ]

3 голосов
/ 13 июля 2011

Внимание:

  • браузер может не обрабатывать геолокацию HTML5

  • пользователь сайта может отказаться от геолокации

Если пользователь принимает геолокацию, вы должны отправить данные напрямую через ajax, в противном случае переменные javascript могут быть изменены на стороне клиента.

if(navigator.geolocation) {
  //try to retrieve user's position
  navigator.geolocation.getCurrentPosition(function(position) {
     //put ajax request here and send (position.coords.latitude, position.coords.longitude)
    },
    function() {
    //failure: the user refused
    }
  );
}
else {
  //failure but the navigator doesn't handle geolocation
}
1 голос
/ 13 июля 2011

Нет способа проверить на 100%, что данные, отправленные на ваш сервер, не были изменены. Пользователь может легко использовать консоль браузера или простой запрос curl, чтобы отправить все, что он хочет.

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

Единственное, о чем я могу подумать, это проверить, что местоположение IP-адреса находится где-то близко к отправленной широте / долготе , используя такой веб-сайт, как этот: http://www.ip2location.com/1.2.3.4

Но в любом случае, это не будет на 100% безопасно, потому что если пользователь хочет связываться с вашим сервером, он может просто использовать прокси-сервер для установки другого IP-адреса.

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