2015-01-25 3 views
2

Какой алгоритм или набор эвристик может использоваться сервером и мобильным приложением, чтобы сервер всегда мог быть уверенным, что приложение используется в границах данного географического региона (например, страна)? Как сервер может гарантировать, что пользователи приложений вне определенного региона не могут ошибочно утверждать, что они находятся внутри региона?Безопасная проверка требований к местоположению мобильным приложением

ответ

1

Вы не можете быть на 100% уверены, что пользователь не сообщает об ошибочном местоположении, вы можете сделать процесс подделания как можно более сложным. Вы должны выполнять несколько проверок в зависимости от данных, которые имеют доступ к:

1) IP-адрес пользователя (пользователь может использовать прокси-сервер)

2) координаты GPS устройства (они могут быть подменены)

3) локаль устройства (не является надежным индикатором)

Одна из самых безопасных проверок (но также не 100%) отправляет пользователю SMS с кодом подтверждения, который он должен ввести в приложение.

Один из самых сложных алгоритмов, известных мне в Google Play (поэтому некоторые приложения доступны только для определенных стран). Он проверяет такие параметры, как IP-адрес, мобильный оператор пользователя и несколько других, но есть инструменты (например, Market Enabler) и методы, которые могут обмануть систему.

+0

Как SMS помогает узнать, находится ли он в стране или нет? –

+0

@JordanDimov Вы можете отправить коды подтверждения только на номера, начинающиеся со своего кода страны. Это нужно сделать один раз при активации учетной записи пользователя. Таким образом, вы можете быть уверены, что каждый пользователь имеет активную SIM-карту из этой конкретной страны. Хотя пользователь может совершить поездку в эту страну и получить местную SIM-карту или попросить кого-либо из этой страны получить подтверждающее SMS-сообщение, это подтверждение может значительно повысить безопасность (в случае, когда другие проверки, например, для IP-адреса, реализуются во время каждого подключения). – bzz

1

Если вы не хотите использовать Google Play или другие способы, лучший способ (я говорю лучше всего, потому что он сначала не стоит ни по какому результату и по затратам, а во-вторых, он прост в использовании и, в-третьих, вам это нужно в любом случае если вы ожидаете большого количества пользователей - он предоставляет хорошие инструменты и статический кеш, оптимизатор, аналитика, блокирование пользователей, блокирование страны и т. д.) - использовать cloudflare.

После того, как вы зарегистрируетесь на бесплатной учетной записи для облачных вычислений, вы можете настроить свой общедоступный IP-адрес своего сервера таким образом, чтобы весь трафик проходил через сеть прокси-сервера cloudflare.

После этого все довольно просто, вы можете установить cloudflare module на свой сервер.

В вашем приложении вы можете получить код страны посетителя в переменной глобального запроса сервера HTTP_CF_IPCOUNTRY - например, $ _SERVER ['HTTP_CF_IPCOUNTRY'] в PHP. Это даст вам AU для Австралии. (код страны-изо-3166-1). Неважно, какой язык вы используете.

База данных Coudflare IP часто обновляется и кажется очень надежной для обнаружения геолокации пользователя без накладных расходов.

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

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

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

0

кроме вещей, упомянутых в @bzz. вы можете прочитать widi SSID пользовательских сетей Wi-Fi, такие услуги, как http://www.skyhookwireless.com/, обеспечивают api (я думаю, с помощью плагинов браузера, я не уверен), которые вы можете использовать для получения местоположения, отправив SSID Wi-Fi. , если вам нужно, чтобы пользователь находился в определенном регионе все время, когда вы используете приложение, вы, вероятно, в конечном итоге используете все варианты вместе, на случай, если вам просто нужна единовременная проверка, основанный на СУБП подход является лучшим из ИМО.

для получения доступа к Wi-Fi SSID, см. this, но вы не можете быть уверены в этом на 100%.

Смежные вопросы