Bezpieczeństwo podczas korzystania z interfejsu API REST w aplikacji na telefon iPhone
Wiem, że to pytanie było już zadawane w różnych formach. Nie szukam jednak odpowiedzi „użyj https”. Używam już HTTPS i nie obawiam się wrażliwości ładunku przesyłanego tam iz powrotem.
Jednak aplikacja na iPhone'a, nad którą pracuję, rozmawia z zbudowanym przeze mnie API REST (mam kontrolę nad aplikacją i serwerem - więc wszelkie sugestie są mile widziane).
Do uwierzytelniania używam protokołu OAuth2, co oznacza, że mój „klucz API” jest połączeniem identyfikatora klienta i tajnego klienta, któretylko należy przekazać, aby uzyskaćaccess_token
. Następnie wszystkie żądania są wysyłane do serwera za pomocąaccess_token
oraz nagłówek zawierający HMAC treści żądania (używając klucza klienta jako klucza). Jedynym powodem tego dodatku było to, że ktoś nie mógł wysyłać żądań API za pomocą JUST anaccess_token
.
Interfejs API, z którym rozmawiam, zostanie opublikowany po wydaniu aplikacji. Więc niekoniecznie martwię się, że inni będą mogli wywoływać do niego API.
To, na czym mi zależy, to:
Ludzie mogą nawiązywać połączenia API przy użyciu poświadczeń klienta mojej aplikacji (co oznacza, że nie mogę wykryć po stronie serwera, że nie pochodzi z mojej aplikacji)Ludzie mogą nadużywać dodatkowych zakresów, które mój identyfikator klienta pozwoli im mieć, a tradycyjni użytkownicy API nie będą mieliDomyślam się, że tak naprawdę nie ma rozwiązania tego problemu (poza używaniem UIWebView i tworzeniem chwalonego webappa), ale pomyślałem, że i tak spytam o to.
Czy wszyscy mogą wymyślić sposób ochrony tajnego identyfikatora klienta / klienta, jeśli ma zostać wykorzystany przez aplikację?