Не хотите хранить секретный ключ API Facebook / Twitter на мобильных устройствах, шаблоны дизайна? - PullRequest
5 голосов
/ 15 ноября 2010

У меня проблема с разрешением использования моего секретного ключа API по всему миру на тысячах мобильных устройств.Он может быть легко взломан и использован злоумышленником в злонамеренных целях.

Так какие варианты для меня?Я бы предположил частный сервер, который имеет секретный ключ API и веб-сервис, который инкапсулирует все вызовы методов.Поэтому вместо того, чтобы мобильное устройство имело секретный ключ и выполняло что-то вроде:
List<Friends> = service.GetFriends(secretKey);

Если мой секретный ключ API скомпрометирован и используется в целях рассылки спама / злоупотребления, я должен прекратить использование длявсе мои пользователи, оставив мое приложение мертвым в море.

Итак, моя идея заключается в том, что я могу использовать уникальный идентификатор мобильного устройства и сделать:
List<Friends> = myService.GetFriends(deviceID);

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

Вероятно, об истинной PKI не может быть и речи, поскольку целевое устройство не обрабатывает сертификаты клиента HTTP в текущей версии.

Есть еще хорошие идеи?

1 Ответ

1 голос
/ 28 февраля 2011

Вы не хотите публиковать свой ключ API в Facebook или Twitter, даже запутанный в клиенте.

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

Существуют более надежные методы аутентификации, которые вы могли бы использовать (аутентификация по SMS и т. Д.) Для установления долгосрочного сеанса или ключа устройства, однако они более сложны и накладывают на конечного пользователя более высокую нагрузку.

TL; DR

Защита ключей API вашей платформы. Защитите свой собственный API достаточно, чтобы защитить ваши потребности.

...