2011-12-08 7 views
8

Chcemy korzystać z usługi internetowej w naszej aplikacji, która oczywiście wymaga połączenia z adresem URL. To nie jest HTTPS, tylko zwykły stary HTTP, używając NSURLConnection.Jak bezpieczne jest wywoływanie "tajnych" adresów URL w aplikacji na iOS?

Problem polega na tym, że ten serwis internetowy jest BARDZO drogi i co tysiąc połączeń kosztuje nas prawdziwe pieniądze. Obawiam się, że ktoś może dowiedzieć się, który URL wywołujemy, a następnie nadużywać go, pozwalając na eksplozję kosztów. Nie możemy sprawdzić, czy połączenie z tym serwisem jest legalne.

Obliczamy na podstawie liczby sprzedawanych przez nas aplikacji pomnożonych przez założenie, jak często ta aplikacja będzie używana dla przeciętnego użytkownika. Mamy dobre statystyki, na których opieramy nasze założenia.

Czy są znane sposoby sprawdzania, który URL wywołuje aplikacja w Internecie w celu pobrania informacji?

+0

To, co robisz, jest zasadniczo niestabilne. Nie będziesz w stanie ukryć tych informacji przed napastnikiem. To tylko "(nie) bezpieczeństwo przez zaciemnienie". – rook

Odpowiedz

2

Tak, istnieje wiele sposobów, aby to zrobić. Na przykład podłącz iPhone'a do sieci Wi-Fi, w której router ma przezroczyste proxy. Sprawdź dzienniki proxy. Zobaczysz wszystkie adresy URL. Zależy od tego, jak określeni są Twoi użytkownicy, ale jest to dość łatwe.

4

Jeśli usługa sieci Web nie jest szyfrowana, używanie serwera proxy do przechwytywania żądań sieciowych wykonanych przez telefon byłoby banalne. Jeśli droga usługa sieciowa nie oferuje przynajmniej jakiejś formy podstawowego uwierzytelnienia, poważnie zastanowiłbym się nad jej URL-em w publicznej aplikacji.

+0

Czy możesz wyjaśnić, co masz na myśli przez "trywialne" i "proxy"? Czy to router WiFi podaje protokół z tego, co się dzieje? Usługa internetowa jest "chroniona" przez identyfikator użytkownika w żądaniu adresu URL. W ten sposób określają swojego "klienta". Oczywiście każdy może skopiować ten adres URL i po prostu nazwać to dokładnie w naszym imieniu. – dontWatchMyProfile

+0

Pewnie. Nie ma potrzeby robienia wszystkiego z routerem. Ilekroć debuguję aplikację sieciową, nad którą pracuję, odpalam swój zaufany proxy oprogramowania Charles [http://charlesproxy.com] i ustawię ustawienia Wi-Fi mojego iPhone'a, aby używał adresu mojego pulpitu jako serwera proxy. Dzięki temu mogę monitorować wszystkie żądania http wysyłane i odbierane przez mój telefon. Sugerowałbym użycie tego oprogramowania do przetestowania go samemu - będziesz mógł zobaczyć, co każdy inny może również zebrać z twoich żądań sieci. –

12

Możesz łatwo użyć sniffera sieciowego, gdy telefon jest podłączony do sieci Wi-Fi, aby znaleźć te informacje. Wygląda na to, że korzystanie z protokołu SSL z jakimś zabezpieczonym tokenem jest w rzeczywistości bardzo ważne w adresie URL.

Jeśli nie jest to możliwe, możesz podać własną usługę proxy, która będzie korzystać z SSL i tokenów zabezpieczających? Proxy zapewnia również możliwość blokowania żądań i blokowania użytkowników znanych jako szkodliwe. Dławienie stawia górną granicę na koszt, który każdy użytkownik może ponieść w danym przedziale czasu. Kolejną zaletą proxy jest to, że pozwala gromadzić statystyki i mierzyć koszty ponoszone przez różnych użytkowników, ułatwiając wykrywanie użytkowników i planowanie biznesowe. Serwer proxy może również zaoszczędzić trochę pieniędzy, jeśli usługa za nim jest bezstanowa, dodając pamięć podręczną, która usunie wiele kosztownych połączeń.

+0

+1 Zauważ, że SSL może być nadal podsłuchiwany przez proxy takie jak Charles, jeśli twój program ślepo ufa certyfikatowi. Musi sprawdzić, czy certyfikat jest podpisany przez * ciebie *, a nie tylko "zaufany podpisujący". Ponadto zawsze jest możliwa re-inżynieria programu w celu określenia ładowności, ale zweryfikowany serwer proxy SSL znacznie podniesie poprzeczkę na iOS, pozostawiając głównie wysoce zmotywowanych atakujących, a nie przypadkowych napastników. –

+1

Masz rację co do tych punktów. Jednym ze sposobów dalszego zwiększenia bezpieczeństwa systemu jest użycie zarówno tokena SSL, jak i tokena zabezpieczającego i sprawienie, by token pochodził od czynnika spoza aplikacji, jak hasło znane tylko autoryzowanemu użytkownikowi (należy wziąć pod uwagę odpowiednie zabezpieczenie równowagi użyteczności) . Zwróć uwagę, że funkcja używana do wyprowadzania tokenów musi być jednokierunkowa. Proxy zapewnia dodatkowe bezpieczeństwo, umożliwiając dławienie lub blokowanie żądań, a tym samym nałożenie górnej granicy na koszt, który szkodliwy użytkownik może ponosić na właścicielu systemu w określonym przedziale czasu. –

+1

Zajęło mi kilka chwil, aby uzyskać tutaj punkt, ale zgodzili się. Jeśli możesz powiązać token z informacją "daj mi z tobą rozmawiać" z konkretną informacją użytkownika (np. Z kontem), możesz znacznie ograniczyć nadużycia. Jeśli nie możesz, możesz słabo ograniczyć nadużycie poprzez dławienie w oparciu o IP. –

1

Ignorując fakt, że osoby, które rzucają jailem na swoje urządzenia, mogą spojrzeć na twoją aplikację, uważam, że możliwe jest zbadanie ruchu sieciowego, tak jak każde inne urządzenie (laptop, tablet itp.), Jeśli ktoś sniffował ruch przez hotspot WiFi aplikacje takie jak WireShark. Wątpię jednak, by istniało duże ryzyko związane z siecią komórkową 3G.

1

Dobre pytanie.

Jak już powiedzieliśmy, tak, łatwo jest znaleźć adresy URL aplikacji, o które prosi.

Informacja o HTTPS: Ale skoro używasz HTTPS jesteś w porządku, bo przez HTTPS domena zostaną zasłonięte na adres IP, a ludzie nie widzą parametry ciągu kwerendy URL. Na przykład, jeśli Twój adres URL to https://somewebsite.com?uid=mylogin&pass=mypass, to na pewno nie będzie można zobaczyć "uid = mylogin & pass = mypass" i prawdopodobnie widzą tylko adres IP, a nie samą nazwę domeny.(Patrz https://serverfault.com/questions/186445/can-an-attacker-sniff-data-in-a-url-over-https)

Sidenote: Może być bezpiecznie założyć, że Apple wykonuje jakieś żądania HTTP diagnostyki, dokonując przeglądu aplikacji - co miałoby sensu, bo to w ich najlepszym interesie, aby spróbować dowiedzieć się, co Twoja aplikacja działa pod wieloma kątami.

3

Używanie zwykłych adresów URL to pewny sposób na to, by dzieciom z skryptów nie towarzyszyły ci biznes. Jeśli nie masz możliwości sprawdzenia, czy połączenie z drogim serwisem jest zgodne z prawem, skonfiguruj własną usługę sieciową, która stanowi prawdziwą usługę sieci Web, aby upewnić się, że Twoja usługa internetowa może zweryfikować zasadność połączenia przed przekazaniem wniosek do prawdziwej usługi internetowej.

Powiązane problemy