Безопасное / Аутентифицированное взаимодействие из приложения WP7 - PullRequest
5 голосов
/ 01 декабря 2010

Я работаю над приложением WP7.Это приложение WP7 будет взаимодействовать с некоторыми веб-сервисами, которые я создал.Я не хочу, чтобы другие приложения взаимодействовали с этими веб-сервисами.Причина в том, что я не хочу, чтобы они крали мои данные.Имея это в виду, вот что я сейчас делаю:

  • Подключение к веб-сервисам через HTTPS
  • Создание первоначального входа пользователей в приложение
  • Передачаимя пользователя / пароль пользователя с каждым взаимодействием веб-службы

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

Спасибо!

Ответы [ 5 ]

1 голос
/ 10 декабря 2010

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

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

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

Этот API будет полезен для обеспечения возможности постоянного внесения устройства в черный список.

DeviceExtendedProperties.GetValue ( «DeviceUniqueId») ToByte ();.

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

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

Люк

1 голос
/ 02 декабря 2010

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

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

1 голос
/ 01 декабря 2010

Для более безопасной системы вам следует прекратить хранить пароль и отправлять его по проводам при каждом запросе (даже если вы используете SSL).

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

0 голосов
/ 01 декабря 2010
0 голосов
/ 01 декабря 2010

Вы можете ввести функцию «ID авторизованного приложения», где приложение отправляет свое имя или идентификатор в каждом теле HTTP-запроса. Затем на стороне сервера вы можете проверить подлинность приложения (например, сохранить идентификаторы авторизованного приложения в таблице). Идентификатор приложения будет зашифрован в теле HTTP (S).

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

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