Защита веб-службы в приложении - PullRequest
2 голосов
/ 04 марта 2012

Я собираюсь сделать приложение (iOS и Android), которое будет использовать веб-сервис, который я разрабатываю.Я буду использовать HTTPS и SSL, чтобы данные, передаваемые из приложения на сервер, были защищены.Однако как я могу остановить (или сделать жизнь людей, которые тяжело декомпилируют приложение) «хакерами» от декомпиляции исходного кода, где написан URL-адрес?

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

Пользователи моего приложения должны зарегистрироваться и войти в систему, чтобы использовать его.Я прочитал кое-что об аутентификации пользователей и передал ключ назад (как это делает Facebook).Однако не означает ли это, что «хакер» может зарегистрироваться и затем использовать тот же ключ?Вам нужно отслеживать использование каждого ключа, чтобы искать нерегулярное использование?

Серверная технология - либо Java EE, либо Scala (Lift).

Ответы [ 2 ]

4 голосов
/ 04 марта 2012

Во-первых: 100% безопасности 100% *

Вы не могли бы обеспечить 100% -ную безопасность для всего, что вы запускаете на устройстве, которое не находится под вашим контролем (например, на устройствах iOS и Android).«злоупотреблять» сложнее с помощью нескольких мер:

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

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

2 голосов
/ 04 марта 2012

Это более или менее невозможно. Вы можете использовать запутывание байт-кода, чтобы усложнить декомпиляцию, но любой, кто достаточно старается, может увидеть, что делает код.

Если вы разрешаете доступ к данным людям, которым вы не можете доверять, тогда единственное, что вы можете сделать, это

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

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

...