Наскільки безпечним є місцеве зберігання?


33

Питання говорить все це насправді. Я хочу надати послугу, але я не хочу самостійно зберігати будь-які дані в базі даних. З усіма останніми новинами про злому тощо, мені здається, що приємніше, що клієнти мають повний контроль над своїми даними.

Проблема полягає в тому, що збережені дані є потенційно чутливими. Що я збирався зробити, це ... коли клієнт відвідує веб-сайт, виникає запитання "ти на персональному або громадському комп'ютері". Якщо вони є на загальнодоступному комп’ютері, сайт відмовить у доступі.

Якщо вони були на персональному комп’ютері, то вони запропонували б їм встановити пароль. Усі їх дані будуть зашифровані цим паролем. Зараз очевидно, це не надто безпечно. Метод шифрування буде в JavaScript, а їх пароль у простому тексті, тому я припускаю, що кмітливий користувач зможе знайти пароль у localStorage та отримати доступ до даних.

Я відчуваю, що це не надто велика проблема. Якщо ви користуєтесь персональним комп’ютером, шанси цього трапляються віддалені, оскільки ... комусь іншому знадобиться доступ до свого конкретного облікового запису користувача на комп’ютері, хтось ще повинен знати про сайт ... хтось ще повинен зрозуміти localStorage та спосіб доступу до нього. Конфіденційні дані - це не те, що може поставити під загрозу їхню особу чи багато іншого. Він просто записує те, що більшість людей не любить публічно публікувати.

Тож справді питання полягає в тому, чи достатньо безпечно локальне зберігання?

Додаткове запитання .. наскільки складно витерти локальний магазин? Я не хотів би, щоб користувачі випадково стирали свої дані.

Нарешті - чи варто навіть шифрувати / розшифровувати їхні дані, ніби у вас є пароль, ви можете отримати доступ до сайту ..


2
Клієнтський JavaScript - не найкраще місце для криптографії. Будь-який розумний користувач може переглянути код і зламати ваш алгоритм шифрування і зробити так, щоб він насправді нічого не робив, і він просто приймає зашифрований пароль.

Відповіді:


10

Як щодо того, щоб взагалі не зберігати пароль, навіть не в локальному сховищі? Ви можете скористатися функцією виведення ключа, щоб отримати ключ від пароля. З сіллю та розумною кількістю ітерацій це повинно бути пристойно захищеним.


Було б безпечніше правильно, якби пароль був поданий на PHP, який потім генерував ключ за кадром?
JasonS

Ні. Пароль спочатку задається клієнту. Відправляючи його на сервер, ви збільшуєте ризик його викрадення. Виконання ключа в JS зберігає таємницю щодо клієнта. У будь-якому випадку слід забути PW незабаром після цього. Але я думаю, що це все ще безглуздо - дивіться мою відповідь.

Багато хакерів досить розумні ... Використовуйте Lib bCrypt.
Едді Б

2

Використання JavaScript з локальним сховищем максимально захищено (ваш сервер плюс з'єднання між браузером та сервером).

Якщо комусь вдається змінити ваш сервер і обслуговувати різні файли JS або модифікувати (під час передачі) файли JS, надіслані з сервера клієнтові, вони можуть зробити все, що потрібно, з потрібними даними.

Додатково: Оскільки дані є на клієнті, ви нічого не можете захистити. На звичайному сервері ви можете, наприклад, обмежити частоту доступу (приклад для віддаленого безпечного пароля: лише 1 пароль, прочитаний протягом 10 хвилин). Все це марно, якщо дані є клієнтом і всім кодом, який працює з даними, може маніпулювати зловмисник.

Адже навіть з локальним зберіганням вам потрібно захистити свій веб-додаток! Чому тоді робити справи на (сподіваюсь) захищеному сервері? Якщо ні, чому б не використовувати локальну програму, встановлену на клієнті?


Ви не вважаєте, що головна проблема безпеки полягає в тому, якщо пристрій звикає чи вкраде хтось інший?

2

Як щодо отримання ключа від сервера, який використовується для розшифрування даних localStorage?

Це може працювати так:

  • Коли сеанс встановлений, сервер повертає ключ.
  • Цей ключ використовується для шифрування / дешифрування даних у localStorage.
  • Коли користувач залишає сторінку, ключ втрачається, заважаючи іншим читати те, що знаходиться в localStorage.

Це має дозволяти доступ лише тоді, коли у користувача встановлений сеанс.


3
Це не буде працювати для доступу до даних в автономному режимі (що здається основним випадком використання для LocalStorage). Щоб використовувати цей метод в режимі офлайн, вам потрібно буде зберегти ключ.
Тімоті Лі Рассел

0

як правило, не важко стерти локальну пам’ять, але це залежить від браузера. Хоча вам потрібно заручитися інструментами для розробників браузерів (firebug, веб-файли тощо).

думайте про це так, як ви думаєте про печиво. Ніколи не слід зберігати конфіденційні дані в локальному сховищі. паролі, номери кредитних карток, що завгодно.

Ви завжди можете реалізувати якусь функцію для очищення локального сховища після x кількості бездіяльності, але це не вирішить проблему безпеки. Схоже, термін дії автоматичного сеансу закінчується. Ця ж проблема стосується того, що якщо людина покидає комп’ютер, а потім хтось ще сідає до закінчення сеансу, вони можуть робити щось.


0

Два питання:

  1. якщо ви зберігаєте просто текстові паролі, а потім покладаєтесь на той факт, який, швидше за все, не буде знайдено, це просто безпека через неясність. Просто зберігайте дані у чіткому тексті та покладайтеся на те саме припущення (все ще не безпечне, але відсутні помилкове почуття безпеки)

  2. у більшості браузерів, якщо люди стирають кеш, вони також видаляють вміст локального сховища. Люди не сподіваються втратити важливі дані, коли вони витирають історію та кеш-пам'ять.

Я думаю, ви перевищуєте те, для чого призначена локальна сховище. Якщо ви хочете використовувати локальну базу даних, яка добре поєднується з веб-картами, ви можете ознайомитись з кушетами CouchDB .

Але не зберігайте пароль.


0

Ви можете використовувати javascrypt . Попросіть у користувача пароль, який став би ключем шифрування / дешифрування

Вам не потрібно зберігати пароль, але вимагайте його щоразу, коли користувач відкриває сторінку.
Може зберігати його, якщо користувач захоче, і тепер наслідки.

Але потім, щоб приєднатися до коментаря stivlo, що робити:

  1. багаторазовий доступ до пристроїв
  2. резервне копіювання
  3. Забули пароль
  4. занадто легке очищення кешу

Я думаю, вам слід переглянути початок міркувань. Уникайте хмари тільки через деякі останні та сенсаційні події, - швидкий висновок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.