2012-02-07 28 views
8

Chcę sprzedać aplikację na iPhone'a, która będzie zawierała pojedynczy widok internetowy na stronie internetowej, na przykład: http://www.myapp.com/webview/ Chciałbym, aby aplikacja skutecznie zapisywała poświadczenia wymagane do uwierzytelnienia na stronie internetowej (tzn. tylko ta osoba, która kupiła aplikację, może wyświetlić tę stronę)Bezpieczne szyfrowanie https dla aplikacji na iPhone do strony internetowej:

Jak inaczej powinienem mieć bezpieczną, prostą odsłonę internetową na iPhone'a, bez konieczności logowania się użytkownika (zasadniczo kupowanie aplikacji będzie stanowić ich uwierzytelnienie strona)

Czy ktoś może w tym pomóc?

+0

Powinieneś naprawdę przyjąć poniższą odpowiedź. To jest bardzo dobre. –

Odpowiedz

18

Nie ma absolutnej metody osiągnięcia tego celu. Jeśli masz usługę sieciową, która korzysta z poświadczeń udostępnionych (po pakiecie w aplikacji), będzie możliwe odtworzenie tego poświadczenia. Ostatecznie niemożliwe jest zapewnienie, że klient działający na innej maszynie jest "twoim" klientem.

Było wiele dyskusji na ten temat. To nie jest beznadziejne, a jedynie niemożliwe do rozwiązania w 100% (a nawet 90%). Prosty wspólny sekret przez SSL zatrzyma większość atakujących bez szkody dla użytkowników lub będzie kosztować dużo. Jest to zaciemnianie, a nie bezpieczeństwo, ale tanie i "w większości skuteczne" jest dużo lepsze niż drogie i "w większości skuteczne".

Jeśli masz produkt o bardzo wysokiej wartości, może to uzasadniać bardziej agresywne (kosztowne) rozwiązania. Wszystkie te rozwiązania to jedna z dwóch rzeczy:

  • Uwierzytelnianie użytkownika zamiast programu lub
  • Nieprzerwana czujność, obserwując nowych ataków i reagowanie z poprawek, które je załatać.

Ten ostatni jest bardzo drogi i nigdy się nie kończy. Upewnij się, że warto.

Niektóre inne użyteczne dyskusje:


EDYCJA Chciałem wskazać jedną rzecz na temat mojej wzmianki o "wspólnym sekretem przez SSL". Pamiętaj, że jeśli nie weryfikujesz certyfikatu, podlegasz bardzo łatwym atakom typu "man-in-the-middle". Łatwo dostępne serwery proxy, takie jak Charles, mogą to zrobić. Najlepszym rozwiązaniem jest upewnienie się, że zwrócony certyfikat SSL jest podpisany przez swój główny certyfikat, a nie tylko "dowolny zaufany certyfikat". Możesz ponownie skonfigurować, które certyfikaty są zaufane przez Twoją aplikację, pod numerem SecTrustSetAnchorCertificates(). iOS5:PTL opisuje tę technikę w rozdziale 11 (strona 221). Zawinęłem to również w bibliotece o nazwie RNPinnedCertValidator.

Inną dobrą warstwą jest wdrożenie systemu odpowiedzi-wyzwania, w którym serwer potwierdza, że ​​klient ma wspólny sekret, nigdy nie umieszczając go na drucie. Artykuł w Wikipedii pod numerem Challenge-resonse authentication zawiera dobre wyjaśnienie algorytmu.

+0

Świetna odpowiedź, dziękuję. –

+0

Edytowane w celu uwzględnienia sposobu złagodzenia problemu podsłuchu SSL. –

Powiązane problemy