sql >> Databáze >  >> RDS >> SQLite

Nejlepší možnost pro uložení uživatelského jména a hesla v aplikaci pro Android

Ano, na Androidu je to složité. Nechcete ukládat heslo ve formátu prostého textu do předvoleb, protože kdokoli s rootovaným zařízením bude v podstatě zobrazovat své heslo světu. Na druhou stranu nemůžete použít šifrované heslo, protože byste museli někde v zařízení uložit svůj šifrovací/dešifrovací klíč, což je opět náchylné k útoku root.

Jedno řešení, které jsem před časem použil, je nechat server vygenerovat „lístek“, který předá zpět do zařízení, což je dobré po určitou dobu. Tento tiket je používán zařízením pro veškerou komunikaci, samozřejmě pomocí SSL, takže ti lidé nemohou tiket ukrást. Tímto způsobem uživatel jednou ověří své heslo na serveru, server odešle zpět lístek s vypršením platnosti a heslo se nikdy nikde na zařízení neuloží.

Tento mechanismus používá několik třínohých autentizačních mechanismů, jako je OpenID, Facebook, dokonce i Google API. Nevýhodou je, že jednou za čas, když vstupenka vyprší, se uživatel musí znovu přihlásit.

Nakonec záleží na tom, jak zabezpečenou aplikaci chcete mít. Pokud jde pouze o rozlišení uživatelů a nejsou uchovávány žádné supertajné informace, jako jsou bankovní účty nebo krevní skupiny, pak je možná uložení OZP v prostém textu na zařízení v pořádku :)

Hodně štěstí, jakákoli metoda, kterou se rozhodnete, je pro vaši konkrétní situaci nejlepší!

Edit:Měl bych poznamenat, že tato technika přenáší odpovědnost za bezpečnost na server – pro porovnání hesel na serveru budete chtít použít osolené hashe, což je nápad, který uvidíte v některých dalších komentářích k této otázce. Tím se zabrání tomu, aby se heslo ve formátu prostého textu objevilo kdekoli kromě zobrazení EditText View na zařízení, komunikace SSL se serverem a RAM serveru, zatímco heslo osoluje a hashuje. Nikdy se neukládá na disk, což je dobrá věc™.



  1. Jak Access komunikuje se zdroji dat ODBC? Část 5

  2. MyCLI – MySQL/MariaDB klient s automatickým dokončováním a zvýrazněním syntaxe

  3. Jak zabít běžící příkaz SELECT

  4. Jak funguje Tan() v PostgreSQL