Pytanie mówi wszystko naprawdę. Chcę świadczyć usługę, ale nie chcę samodzielnie przechowywać żadnych danych w bazie danych. Biorąc pod uwagę wszystkie najnowsze wiadomości o hakowaniu itp., Wydaje mi się, że milej jest, gdy klienci mają pełną kontrolę nad swoimi danymi.
Problem polega na tym, że przechowywane dane są potencjalnie wrażliwe. Miałem zamiar… kiedy klient odwiedza stronę internetową, pojawi się pytanie „czy jesteś na komputerze osobistym czy publicznym”. Jeśli są na komputerze publicznym, strona odmówi dostępu.
Gdyby byli na komputerze osobistym, poprosiłoby ich o ustawienie hasła. Wszystkie ich dane byłyby następnie szyfrowane przy użyciu tego hasła. Teraz oczywiście nie jest to zbyt bezpieczne. Metoda szyfrowania byłaby w JavaScript, a ich hasło w postaci zwykłego tekstu, więc zakładam, że bystry użytkownik mógł zlokalizować hasło w localStorage i uzyskać dostęp do danych.
Wydaje mi się jednak, że nie stanowi to większego problemu. Jeśli używasz komputera osobistego, szanse na to są zdalne, ponieważ ... ktoś inny potrzebuje dostępu do swojego konta użytkownika na komputerze, ktoś inny musi wiedzieć o stronie ... ktoś inny musi zrozumieć localStorage i jak uzyskać do niego dostęp. Wrażliwe dane nie są takie, które zagrażają ich tożsamości lub wielu innym. Zapisuje po prostu coś, czego większość ludzi nie chciałaby opublikować publicznie.
Tak naprawdę pytanie brzmi: czy localStorage jest wystarczająco bezpieczny?
Dodatkowe pytanie ... jak trudno jest wyczyścić pamięć lokalną? Nie chciałbym, aby użytkownicy przypadkowo wyczyścili swoje dane.
Wreszcie - czy warto szyfrować / deszyfrować ich dane tak, jakbyś miał hasło, aby uzyskać dostęp do strony ...
źródło
Odpowiedzi:
Co powiesz na to, by w ogóle nie przechowywać hasła, nawet w lokalnej pamięci? Możesz użyć funkcji wyprowadzania klucza, aby uzyskać klucz z hasła. Przy soli i rozsądnej liczbie iteracji powinno to być dość bezpieczne.
źródło
Używanie JavaScript z pamięcią lokalną jest maksymalnie tak bezpieczne, jak (twój serwer plus połączenie między przeglądarką a serwerem).
Jeśli komuś uda się zmodyfikować serwer i obsługiwać różne pliki JS lub zmodyfikować (podczas przesyłania) pliki JS wysłane z serwera do klienta, mogą zrobić wszystko z danymi, które chcą.
Dodatkowo: Ponieważ dane znajdują się na kliencie, nie można nic zrobić, aby je chronić. Na zwykłym serwerze możesz np. Ograniczyć częstotliwość dostępu (przykład dla bezpiecznego hasła zdalnego: tylko 1 hasło odczytane w ciągu 10 minut). Wszystko to jest bezużyteczne, jeśli dane znajdują się na kliencie, a atakujący może manipulować całym kodem pracującym z danymi.
W końcu nawet z localstorage musisz zabezpieczyć swoją aplikację internetową! Po co więc robić rzeczy na (miejmy nadzieję) bezpiecznym serwerze? Jeśli nie, to dlaczego nie użyć lokalnego programu zainstalowanego na kliencie?
źródło
Co powiesz na uzyskanie klucza z serwera używanego do odszyfrowywania danych localStorage?
Może działać w następujący sposób:
Powinno to umożliwiać dostęp tylko wtedy, gdy użytkownik ma ustanowioną sesję.
źródło
ogólnie nie jest trudno wyczyścić lokalną pamięć, ale zależy to od przeglądarki. Musisz jednak skorzystać z narzędzi programistycznych przeglądarek (firebug, webkit itp.).
pomyśl o tym jak o ciasteczkach. Nigdy nie należy przechowywać wrażliwych danych w pamięci lokalnej. hasła, numery kart kredytowych, cokolwiek.
zawsze możesz zaimplementować jakąś funkcję, aby wyczyścić pamięć lokalną po x braku aktywności, ale to nie rozwiąże problemu bezpieczeństwa. To tak, jakby wygasła sesja automatyczna. Ten sam problem dotyczy tego, że jeśli ktoś opuści komputer, a potem ktoś usiądzie przed końcem sesji, może zrobić różne rzeczy.
źródło
Dwie kwestie:
jeśli przechowujesz hasła w postaci zwykłego tekstu, a następnie polegasz na fakcie, że prawdopodobnie ich nie znajdziesz, to tylko bezpieczeństwo dzięki niejasnościom. Po prostu przechowuj dane w postaci czystego tekstu i opieraj się na tym samym założeniu (wciąż nie jest bezpieczne, ale nie ma fałszywego poczucia bezpieczeństwa)
w większości przeglądarek, jeśli ludzie wyczyszczą pamięć podręczną, usuwają również zawartość localStorage. Ludzie nie oczekują utraty ważnych danych, gdy wyczyszczą swoją historię i pamięć podręczną.
Myślę, że przesadzasz, do czego służy localStorage. Jeśli chcesz korzystać z lokalnej bazy danych, który gra dobrze z webapps można spojrzeć na couchdb „s couchapps .
Ale nie przechowuj hasła.
źródło
Możesz użyć javascrypt . Poproś użytkownika o hasło, które stanie się kluczem szyfrowania / deszyfrowania
Nie musisz przechowywać hasła, ale żądaj go za każdym razem, gdy użytkownik otworzy stronę.
Może być przechowywany, jeśli użytkownik chce, a teraz implikacje.
Ale dołączając do komentarza stivlo, co z:
Myślę, że powinieneś ponownie rozważyć początek rozumowania. Unikaj chmury tylko z powodu niektórych ostatnich i sensacyjnych wydarzeń, to szybki wniosek.
źródło