2015-05-11 5 views
8

Ich mache eine Android-Anwendung und derzeit habe ich meinen Server-Benutzernamen und Passwort als Konstanten in meinem Code geschrieben (die nicht sehr sicher ist). Ich habe online recherchiert, aber ich konnte nicht wirklich etwas finden, das das Kennwort vom Benutzer vollständig sichern oder wenigstens vor Hackern verhindern würde. Könnte mir jemand helfen, wie man ein Passwort lokal auf Android sicher speichert? Vielen Dank!Speichern Sie einen Schlüssel oder ein Passwort sicher lokal auf Android

+2

Vielleicht hilfreich: http://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api-keys-in-android – Thilo

+1

Sie können dies auch überprüfen. http://Stackoverflow.com/a/1925534/931982 – stinepike

+0

http://Stackoverflow.com/a/30464898/1254184 –

Antwort

3

Es scheint Ihre Frage ist tatsächlich "kann ich den Serverzugriff nur auf meine Anwendung beschränken?". Das ist nicht möglich. Sobald eine Anwendung oder Datei auf einem Client (z. B. einem Benutzergerät) existiert, gibt es keine sichere Möglichkeit, den Client daran zu hindern, mit oder ohne Ihre Autorisierung auf irgendetwas in dieser Anwendung oder Datei zuzugreifen.

Wenn das Gerät lesen kann, dann das Gerät kann es lesen - unabhängig davon, ob es tatsächlich Ihre Anwendung das Lesen zu tun, oder etwas anderes vorgibt, die Anwendung zu sein.

Das meiste, was Sie tun können, ist zu versuchen, die Anmeldeinformationen zu verschleiern, aber dies ist wahrscheinlich nicht nützlich - diejenigen, die ein Interesse daran haben, Anmeldeinformationen aus Ihrer Anwendung zu extrahieren, werden wahrscheinlich auch die Fähigkeiten haben, solche Verschleierung zu umgehen .

Ich kann Ihnen keinen spezifischeren Vorschlag geben, ohne Ihren Anwendungsfall zu kennen. Für Remote-APIs werden in der Regel API-Schlüssel verwendet. Dies erfordert jedoch, dass der Benutzer ein Konto erstellt. Für kontofreie Anwendungen ist das, was Sie wollen, einfach nicht möglich.

Ich sollte auch beachten, dass "Hacker zu verhindern" ist kein sinnvolles Ziel - das kann viele Dinge bedeuten. Sie sollten sich darüber informieren, wie die Bedrohungsmodellierung funktioniert, und genau ermitteln, wer Ihre Angreifer sind, welche Ziele sie verfolgen und welche Funktionen sie haben. Nur dann können Sie versuchen, Lösungen dagegen zu finden.

EDIT: Ich wollte nur ein zusätzliches Wort der Warnung hinzufügen: jemand, der Ihnen sagt, dass Verschleierung für diese Art von Szenarien "effektiv" ist, versucht, Ihnen etwas zu verkaufen. Leider sind sie bei solchen Versuchen meist recht erfolgreich. Die Verschleierung Modell kann nicht und nicht arbeiten.

+0

Vielen Dank! Ich benutze tatsächlich Benutzer in meiner Anwendung, aber ich habe einige Informationen auf meinem Server, die keine Benutzerinformationen enthalten, also habe ich versucht, das mit meinem Server-Benutzernamen und Passwort herunterzuladen. Jetzt benutze ich einfach den Benutzernamen und das Passwort, die der Benutzer einem Servlet gegeben hat, das dann die Informationen verarbeitet und mir die gewünschte Antwort gibt. – Pranav

+0

@Pranav Ja, das klingt nach der richtigen Lösung :) Stellen Sie sicher, dass TLS (HTTPS) für die Verbindung verwendet wird, damit der Login nicht von einem böswilligen Access Point abgefangen werden kann! Es ist sogar noch besser, wenn Sie das TLS-Zertifikat oder die Zertifizierungsstelle in Ihrer App fest codieren. Sie können Google für "MITM-Angriff" um weitere Informationen über die Art von Angriffen, die verhindert werden. –

+0

@Pranav Zusätzlich zu Svens Ratschlag können Sie auch einen kommerziellen Obfuscator verwenden, der über eine String-Verschlüsselungsfunktion verfügt. Selbst wenn Sie die SSL-Pining-Technik verwenden, ist es kein Problem, die Anwendung zu manipulieren und das Zertifikat zu ändern. Die bewährte Methode besteht also darin, die Integrität Ihrer Anwendung zu schützen (Integrity Control/Anti Tampering) und ihre wertvollen Daten zu verschlüsseln. Ich würde unser Produkt DexProtector empfehlen, das zu tun. N.B. Ich bin Mitglied bei Licel (Entwickler von DexProtector) –

Verwandte Themen