2012-02-06 3 views
4

У нас есть приложение для Android и ios, которое отправляет данные и команды на сервер с помощью http webservice. Как я могу предотвратить возможность того, что фальшивые клиенты также могут отправить что-то на сервер? Как я могу определить serveridely, если данные/команда действительно поступает из наших приложений.Предотвращение «поддельного клиента» для приложения ios

+0

Возможно, вы захотите удалить тег Android, поскольку он вводит в заблуждение. –

+0

У нас также есть приложение для Android, но я забыл записать его. – rakete

+0

есть что-то еще непонятное для вас или на вопрос ответили? – DasFuxx

ответ

9

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

Простая проверка может заключаться в проверке пользовательского агента, вызывающего ваш веб-сервис. Другим довольно распространенным является использование простой аутентификации с помощью аутентификации пользователя/пароля на вашем веб-сервере. Имя пользователя и пароль будут включены в ваше приложение.

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

Есть и другие полезные методы, но вы не можете предотвратить обратную инженерию или сетевое обнюхивание.

С уважением, fuxx

+0

, в дополнение к этому вы можете периодически генерировать случайные маркеры проверки подлинности на сервере и отправлять их клиенту через push-say каждый час. Затем клиент должен будет использовать этот токен для вызова веб-службы. – HeikoG

2

Я бы применил oAuth. См. the following link для получения дополнительной информации о том, как реализовать такое решение.

+0

Я не вижу, как использование oAuth может решить эту проблему, поскольку вы не можете предположить, что мобильное приложение способно хранить секрет своей секретности клиента (учетные данные) - вы можете указать учетные данные клиента приложения и подделать его. – KFL

3

Самое надежное решение - не попробовать. Такие методы, как ответ DasFuxx, могут сделать его немного сложнее, но кто-то всегда может декомпилировать ваше приложение и получить все секреты, которые вы вложили в него.

Вместо следовать правилу развития многопользовательской игры:

Не доверять клиенту.

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

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

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