2010-12-01 3 views
5

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

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

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

Спасибо!

ответ

0

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

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

+0

Проблема в том, что кто-то решил загрузить файл .xap. Они все еще могут видеть идентификатор приложения. Даже обфускация не безупречна. Должен быть какой-то способ решить эту проблему. – user462166 2010-12-01 15:01:26

1

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

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

1

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

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

1

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

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

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

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

DeviceExtendedProperties.GetValue ("DeviceUniqueId").ToByte();

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

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

Luke

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