Pobieram dane z zewnętrznego serwera do użytku z moją aplikacją na Androida. Chciałbym, aby te dane były dostępne tylko dzięki mojej aplikacji. Używam standardowego połączenia HTTP do pobierania danych z serwera apache/php w formacie json. Wysyłam także kilka parametrów do serwera, aby pobrać odpowiednie dane. Teraz, co mam zamiar zrobić, to:Sprawdź, czy żądanie http pochodzi z mojej aplikacji na Androida
- Wyślij params
- wysłać coś podobnego md5 ("someSecretPhrase" + params).
- Sprawdź, czy tajne wyrażenie jest poprawne po stronie serwera.
Teraz pytanie brzmi - czy jest to bezpieczne podejście do inżynierii wstecznej? Na razie nie mogę wymyślić żadnej innej możliwości uzyskania tych danych. Ale jeśli ktoś jest w stanie zdekompilować mój apk, będzie mógł również odzyskać tę "someSecretPhrase" (raczej trudne do zrobienia po stronie serwera), a następnie uzyskać dostęp do serwera, prawda? Czy to prawdziwe zagrożenie? Czy jest jakaś inna możliwość uwierzytelnienia mojej aplikacji przez serwer?
Spojrzałem na forach, np. Identify whether HTTP requests from Android App or not? and then respond appropriately, ale nie wyjaśniają problemu dekompilacji.
Zaczynam od udostępnionego hostingu, więc inna architektura na serwerze prawdopodobnie nie jest dla mnie opcją. Te dane nie są podatne na zagrożenia (bez numerów kart kredytowych klienta), ale będzie to wymagało dużo pracy, aby je zebrać (i będzie ono gromadzone w sposób ciągły), więc byłoby naprawdę źle, gdyby ktoś mógł po prostu skopiować mój pomysł i wykorzystać dane. .. –
Cóż, jeśli twój serwer odpowiada pewnymi danymi, powinieneś uznać to za publiczne. Oprócz dekompilowania aplikacji i fałszowania próśb, osoba atakująca może po prostu użyć serwera proxy i przesłać dane, które wyślesz do legalnej aplikacji. –
Tak więc, jeśli dobrze cię zrozumiałem, jedyną opcją, aby zrobić to bezpiecznie, jest użycie szyfrowanego połączenia między serwerem a aplikacją. Https byłoby ok? Rozumiem, że nie jest tak łatwy w użyciu. Ale jakie są inne wady? To znacznie wolniej, prawda? Po prostu próbuję sprawdzić, czy bezpieczeństwo tych danych jest warte wysiłku. –