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
Antwort
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.
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
@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. –
@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) –
- 1. Wie sicher Benutzername/Passwort (lokal) zu speichern?
- 2. Wie sichere Passwörter auf Android sicher speichern?
- 3. Passwort sicher auf dem Server speichern
- 4. C# lokal speichern ein Passwort für die Online-Verifizierung
- 5. Ist es sicher, dass creadit Karteninformationen auf Android speichern?
- 6. Verwenden Sie Svnant ohne einen Benutzernamen oder ein Passwort
- 7. Stellen Sie sicher, dass Sie einen Android-Emulator ausgeführt oder ein Gerät verbunden haben und
- 8. Wie sicher ist das Speichern von Passwort mit Git?
- 9. So speichern Sie den privaten Schlüssel für Android Cordova App
- 10. Sudo-Passwort als Variable im Skript speichern - ist das sicher?
- 11. Verstecken Sie ein Passwort auf Argv von PS oder Who
- 12. So speichern Sie ein Passwort, wenn Sie den tatsächlichen Passwort-Text benötigen
- 13. Wie kann ich Informationen sicher auf einem Android-Gerät speichern?
- 14. winforms Datentabelle lokal speichern
- 15. So speichern Sie Schlüssel mit Android Key Store Provider
- 16. Android KeyStore - So speichern Sie einen RSA PrivateKey
- 17. Key Containers, sicher genug, um private Schlüssel zu speichern?
- 18. Titanium - Informationen sicher auf dem Gerät speichern
- 19. Wie WebDAV Passwort lokal zu ändern
- 20. Wie sicher speichern Dateien auf einem Server
- 21. Sicherheit über einen Benutzernamen/ein Passwort hinaus?
- 22. Speichern Sie das verschlüsselte Passwort in xml
- 23. Wie sichere Datenbank Passwort in Python sicher?
- 24. SVN verschlüsselt Passwort speichern
- 25. Ein Passwort mit dem Zend Framework speichern
- 26. Speichern von Benutzername und Passwort in Android App
- 27. Warum sollten Sie jemals ein unverschlüsseltes oder verschlüsseltes (nicht gehashtes) Passwort in einer Datenbank speichern?
- 28. Speichern privater Schlüssel in der Datenbank
- 29. PhoneGap - JSON Daten lokal auf dem Gerät speichern
- 30. Wie man ein Passwort in angularjs sicher speichert
Vielleicht hilfreich: http://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api-keys-in-android – Thilo
Sie können dies auch überprüfen. http://Stackoverflow.com/a/1925534/931982 – stinepike
http://Stackoverflow.com/a/30464898/1254184 –