sql >> Databasteknik >  >> RDS >> SQLite

Bästa alternativet för att lagra användarnamn och lösenord i Android-appen

Ja, det här är knepigt på Android. Du vill inte lagra klartextlösenordet i inställningarna, eftersom alla med en rotad enhet i princip kommer att visa sitt lösenord för världen. Å andra sidan kan du inte använda ett krypterat lösenord, eftersom du måste lagra din krypterings-/dekrypteringsnyckel någonstans på enheten, återigen mottaglig för rotattacken.

En lösning jag använde för ett tag sedan är att låta servern generera en "biljett" som den skickar tillbaka till enheten, vilket är bra under en viss tid. Denna biljett används av enheten för all kommunikation, med SSL så klart så att folk inte kan stjäla din biljett. På så sätt autentiserar användaren sitt lösenord på servern en gång, servern skickar tillbaka en biljett som löper ut och lösenordet lagras aldrig någonstans på enheten.

Flera trebenta autentiseringsmekanismer, som OpenID, Facebook, till och med Googles API:er, använder denna mekanism. Nackdelarna är att då och då när biljetten går ut måste användaren logga in igen.

I slutändan beror det på hur säker du vill att din ansökan ska vara. Om detta bara är för att särskilja användare, och ingen superhemlig information lagras som bankkonton eller blodtyper, så kanske det går bra att spara PWD i klartext på enheten :)

Lycka till, vilken metod du än väljer är bäst för just din situation!

Edit:Jag bör notera att den här tekniken överför ansvaret för säkerheten till servern - du vill använda saltade hash för lösenordsjämförelse på servern, en idé som du kommer att se i några av de andra kommentarerna för den här frågan. Detta förhindrar att lösenordet i klartext visas någonstans förutom EditText View på enheten, SSL-kommunikationen till servern och serverns RAM medan den salter och hashar lösenordet. Det lagras aldrig på disk, vilket är en bra sak™.



  1. SQL-fråga för att hämta den senaste raden för varje instans av en given nyckel

  2. Hitta beroenden i SQL Server:sql_expression_dependencies

  3. hur gör man en funktion för att returnera radtyp från en tabell i pl/sql?

  4. Slå samman en tabell och en ändringslogg till en vy i PostgreSQL