Zajmuję się tworzeniem aplikacji, która łączy się z interfejsem API opartym na XML. Mam kontrolę zarówno nad serwerem, jak i aplikacją - czy jest jakiś sposób, aby upewnić się, że tylko moja aplikacja może uzyskać dostęp do interfejsu API?Bezpieczna komunikacja między iPhone'em i serwerem?
Brak uwierzytelnienia użytkownika.
EDIT:
Głównym problemem jest to, że boty kradzieży danych poprzez skanowanie kodu XML.
Jak o tym:
zażądać sesję z UDID urządzenia i uzyskać klucz Handshake.
<handshake>23354</handshake>
od tego napisu hasło zostanie obliczony zarówno serwera i klienta zgodnie z ustalonym algorytmem (to po prostu musi być trudne do odtworzenia)
Załóżmy teraz, że mogę dodać 1 do klucz handshake
password = 23354
Przy wszystkich wywołaniach API przekazuję to hasło wraz z identyfikatorem UDID. Pozwoliłoby to serwerowi ograniczyć każdą sesję do określonej liczby połączeń, nie?
Co myślisz?
Nie wierzę, że istnieje jakakolwiek obietnica, że sekwencja zwrócona przez rand() będzie taka sama z platformy na platformę. POSIX nie wydaje się definiować rzeczywistego algorytmu, tylko minimalne wymagania. Zakładam, że powyższy serwer wybiera "123". Jeśli klient go wybierze, nie zapewni to żadnego bezpieczeństwa (nawet banalne zabezpieczenia). Jeśli serwer wyśle id, są szybsze przerwy niż obliczanie wszystkich wartości dla nasion 64k. Najbardziej oczywiste jest dla MiM sesji. Mogę również znaleźć materiał siewny znacznie szybciej, rzucając wyzwanie klientowi o id = 1, a następnie id = 2 dla kilku kolizji. –