Насколько безопасно локальное хранилище?

В этом вопросе говорится все. Я хочу предоставить услугу, но я не хочу хранить какие-либо данные самостоятельно в базе данных. Со всеми последними новостями о взломе и т. Д. Мне кажется, что лучше, что клиенты имеют полный контроль над своими данными.

Проблема заключается в том, что хранящиеся данные потенциально чувствительны. То, что я собирался сделать, было ... когда клиент посещает веб-сайт, возникает вопрос: «Вы на персональном компьютере или на общедоступном компьютере». Если они находятся на общедоступном компьютере, сайт откажется от доступа.

Если они были на персональном компьютере, он будет предлагать им установить пароль. Все их данные затем будут зашифрованы с помощью этого пароля. Теперь, очевидно, это не слишком безопасно. Метод шифрования был бы в JavaScript и их пароле в виде обычного текста, поэтому я предполагаю, что опытный пользователь сможет найти пароль в localStorage и получить доступ к данным.

Я чувствую, что это не слишком большая проблема. Если вы используете персональный компьютер, шансы на это удаляются, поскольку ... кому-то потребуется доступ к их учетной записи пользователя на компьютере, кто-то еще должен знать о сайте ... кому-то еще нужно будет понять localStorage и как получить к нему доступ. Чувствительные данные не являются таковыми, которые могут скомпрометировать их личность или многое другое. Он просто записывает то, что большинство людей не хотели бы публично публиковать.

На самом деле вопрос в том, является ли localStorage достаточно безопасным?

Дополнительный вопрос .. насколько сложно стереть ваш localStorage? Я бы не хотел, чтобы пользователи случайно стереть их данные.

Наконец, даже стоит зашифровать /дешифровать свои данные, как будто у вас есть пароль, доступ к которому вы можете получить.

30 голосов | спросил JasonS 5 Maypm11 2011, 20:19:25

6 ответов


6

Как просто не хранить пароль вообще, даже не в локальном хранилище? Вы можете использовать функцию деривации ключа, чтобы получить ключ от пароля. С солью и разумным количеством итераций это должно быть прилично защищено.

ответил CodesInChaos 5 Maypm11 2011, 20:22:39
1

Использование JavaScript с локальным хранилищем максимально безопасно, как (ваш сервер и соединение между браузером и сервером).

Если кому-то удастся изменить ваш сервер и обслуживать разные JS-файлы или изменить (при их передаче) файлы JS, отправленные с сервера клиенту, они могут делать все с нужными данными.

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

В конце концов, даже с localstorage вам нужно защитить свое веб-приложение! Зачем делать что-то на защищаемом сервере (надеюсь)? Если нет, почему бы не использовать локальную программу, установленную на клиенте, либо?

ответил Daniel Böhmer 5 Maypm11 2011, 20:44:12
1

Как получить ключ от сервера, который используется для дешифрования данных localStorage?

Он может работать следующим образом:

  • Когда сеанс установлен, сервер возвращает ключ.
  • Этот ключ используется для шифрования /дешифрования данных в localStorage.
  • Когда пользователь покидает страницу, ключ теряется, не позволяя другим читать то, что находится в localStorage.

Это разрешает доступ только в том случае, если пользователь имеет установленный сеанс.

ответил Justin Meyer 8 AM00000020000005931 2012, 02:58:59
0

обычно не сложно стереть локальное хранилище, но это зависит от браузера. Вам нужно получить инструменты разработчика браузеров (firebug, webkit stuff и т. Д.).

думайте об этом, как о куках. Вы никогда не должны хранить конфиденциальные данные в локальном хранилище. пароли, номера кредитных карт, что угодно.

вы всегда можете реализовать некоторую функцию для очистки локального хранилища после x бездействия, но это не решит проблему безопасности. Это похоже на автоматическое завершение сеанса. Эта же проблема применяется, если человек покидает компьютер, а затем кто-то еще сидит до истечения срока действия сессии, они могут делать что-то.

ответил hvgotcodes 5 Maypm11 2011, 20:23:33
0

Два вопроса:

  1. , если вы храните простые текстовые пароли, а затем полагаетесь на то, что вряд ли можно найти, это просто безопасность через неясность. Просто храните данные в открытом виде и полагайтесь на одно и то же предположение (все еще небезопасное, но не ложное чувство безопасности)

  2. в большинстве браузеров, если люди уничтожают свой кеш, они также удаляют свой контент localStorage. Люди не ожидают потерять важные данные, когда они уничтожают свою историю и кеш.

Я думаю, что вы перегибаете то, для чего предназначен localStorage. Если вы хотите использовать локальную базу данных, которая хорошо воспроизводится с помощью webapps, вы можете взглянуть на CouchDB couchapps .

Но не храните пароль.

ответил Giacomo 5 Maypm11 2011, 20:32:25
0

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

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

Но затем, чтобы присоединиться к комментарию stivlo, как насчет:

  1. доступ к нескольким устройствам
  2. резервного копирования
  3. забыл пароль
  4. слишком простая очистка кеша

Я думаю, вы должны пересмотреть начало рассуждений. Избегайте облака только из-за недавних и сенсационных событий, это быстрый вывод.

ответил Mic 5 Maypm11 2011, 23:42:45

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132