it-swarm-eu.dev

Jak bezpečné je místní ukládání?

Otázka říká, že to všechno opravdu. Chci poskytovat službu, ale nechci ukládat žádná data sama do databáze. Se všemi nejnovějšími zprávami o hackování atd. Se mi zdá, že je hezčí, že klienti mají úplnou kontrolu nad svými daty.

Problém je v tom, že uložená data jsou potenciálně citlivá. Chtěl jsem udělat ... když klient navštíví web, byla by položena otázka „jste na osobním počítači nebo na veřejném počítači“. Pokud jsou na veřejném počítači, web by přístup odmítl.

Pokud by byli na osobním počítači, pak by byli vyzváni, aby nastavili heslo. Všechna jejich data by pak byla zašifrována pomocí tohoto hesla. Nyní to samozřejmě není příliš bezpečné. Metoda šifrování by byla v JavaScriptu a jejich heslo v prostém textu, takže předpokládám, že by důvtipný uživatel mohl najít heslo v localStorage a získat přístup k datům.

Mám pocit, že to není příliš problém. Pokud používáte osobní počítač, šance na tuto událost jsou vzdálené, protože ... někdo jiný by potřeboval přístup ke svému konkrétnímu uživatelskému účtu v počítači, někdo jiný by musel vědět o webu ... někdo jiný by musel rozumět localStorage a jak k němu získat přístup. Citlivá data nejsou taková, která by ohrozila jejich identitu nebo mnohem víc. Zaznamenává pouze něco, co by většina lidí nechtěla zveřejnit.

Otázka tedy zní, je localStorage dostatečně bezpečný?

Další otázka .. jak obtížné je vymazat váš localStorage? Nechtěl bych, aby uživatelé náhodně vymazali svá data.

Konečně - je to dokonce stojí za to zašifrovat/dešifrovat jejich data, jako kdybyste měli heslo, můžete přistupovat na web.

33
JasonS

Co takhle vůbec neukládat heslo, dokonce ani v místním úložišti? Pomocí funkce odvození klíče můžete získat klíč z hesla. Se solí a přiměřeným počtem iterací by to mělo být slušně bezpečné.

10
CodesInChaos

Použití JavaScriptu s místním úložištěm je maximálně bezpečné jako (váš server plus spojení mezi prohlížečem a serverem).

Pokud se vám někdo podaří upravit váš server a obsluhovat různé soubory JS nebo upravit (během přenosu) soubory JS odeslané ze serveru klientovi, může s daty, která chtějí, udělat cokoli.

Navíc: Protože data jsou na klientovi, nemůžete nic udělat pro ochranu dat. Na běžném serveru byste mohli např. omezit frekvenci přístupu (například pro bezpečné vzdálené heslo: pouze 1 heslo načtené do 10 minut). To vše je zbytečné, pokud jsou data na klientovi a útočník může manipulovat s veškerým kódem, který s nimi pracuje.

Koneckonců i s lokálním ukládáním je třeba zabezpečit webovou aplikaci! Proč tedy dělat věci na (snad) bezpečném serveru? Pokud ne, proč nepoužíváte místní program nainstalovaný na klientovi?

2
Daniel Böhmer

Co třeba získat klíč ze serveru, který se používá k dešifrování dat localStorage?

Mohlo by to fungovat takto:

  • Po vytvoření relace vrátí server klíč.
  • Tento klíč se používá k šifrování/dešifrování dat v localStorage.
  • Když uživatel opustí stránku, klíč je ztracen, což ostatním brání ve čtení toho, co je v localStorage.

To by mělo umožnit přístup, pouze pokud má uživatel zavedenou relaci.

2
Justin Meyer

Dvě čísla:

  1. pokud si ukládáte hesla prostého textu a pak se spoléháte na skutečnost, že je nepravděpodobné, že budou nalezeny, je to jen bezpečnost díky skrytí. Pouze ukládejte data v jasném textu a spoléhejte na stejný předpoklad (stále není bezpečný, ale žádný falešný pocit bezpečí)

  2. ve většině prohlížečů, pokud lidé smažou mezipaměť, odstraní také jejich obsah localStorage. Lidé nečekají, že ztratí důležitá data, když smažou svou historii a mezipaměť.

Myslím, že překračujete to, pro co je localStorage určeno. Pokud chcete použít lokální databázi, která se dobře hraje s webovými aplikacemi, můžete se podívat na CouchDB 's couchapps .

Heslo však neukládejte.

1
Giacomo

obvykle není obtížné vymazat lokální úložiště, ale záleží na prohlížeči. Musíte se však dostat do vývojářských nástrojů prohlížečů (firebug, webkit atd.).

přemýšlejte o tom, jako byste si mysleli o cookies. Nikdy byste neměli uchovávat citlivá data v místním úložišti. hesla, čísla kreditních karet, cokoli.

vždy můžete implementovat nějakou funkci pro vymazání místního úložiště po x množství nečinnosti, ale to neřeší bezpečnostní problém. Je to jako automatická relace vyprší. Stejný problém platí, pokud osoba opustí počítač a pak někdo jiný sedí před vypršením relace, může dělat věci.

0
hvgotcodes

Můžete použít javascrypt . Požádejte uživatele o heslo, které by se stalo šifrovacím/dešifrovacím klíčem

Heslo nemusíte ukládat, ale vyžaduje to pokaždé, když uživatel stránku otevře.
Může být uloženo, pokud chce uživatel, a nyní důsledky.

Ale pak se připojte ke komentáři Stivla, co:

  1. přístup k více zařízením
  2. záloha
  3. zapomenuté heslo
  4. příliš snadné vymazání mezipaměti

Myslím, že byste měli zvážit začátek uvažování. Vyhněte se cloudu jen kvůli nedávným a senzačním událostem, je to rychlý závěr.

0
Mic