Безопасность веб-базы данных HTML5

Я ищу решение для автономного веб-приложения с использованием HTML5. Функциональность - это все, что мне нужно, НО сохраненные данные могут быть напрямую запрошены прямо в браузере и, следовательно, совершенно небезопасны!

Можно ли как-то зашифровать/скрыть, чтобы данные были в безопасности?

Спасибо д.


person user317077    schedule 15.04.2010    source источник
comment
См. также здесь: stackoverflow.com/questions/5976046/   -  person user832834    schedule 14.07.2011


Ответы (3)


Есть две проблемы с локальным хранилищем в HTML5:

  1. Один веб-сайт считывает автономные данные, которые другой веб-сайт сохранил в браузере пользователя.
  2. Конечный пользователь напрямую запрашивает офлайн-данные ваших веб-сайтов.

Для 1 браузеры применяют ограничения одного и того же домена для localStorage (или поддержки базы данных sqllite, которую имеет Safari), поэтому другие веб-сайты не будут иметь доступа к данным, которые вы храните. Однако помните, что если на вашем сайте есть XSS-уязвимости, можно украсть данные.

Для 2 вы не можете предотвратить это. Это похоже на файл cookie - пользователь может просмотреть/удалить/изменить его.

Шифрование данных возможно (см. http://farfarfar.com/scripts/encrypt/), но бессмысленно. У вас не может быть единого глобального ключа/пароля, потому что злоумышленник может легко вычислить ключ из кода javascript. Использование введенного пользователем пароля для шифрования/дешифрования возможно, но библиотеки шифрования на стороне клиента недостаточно развиты или протестированы. Есть, вероятно, тонны способов сломать его.

Итак, по крайней мере, сейчас не храните конфиденциальные данные в localStorage.

person Sripathi Krishnan    schedule 15.04.2010
comment
code.google.com/p/gwt-crypto — это проверенная криптографическая библиотека, использовать в коде на стороне клиента (хотя он использует GWT) - person Tyson; 31.12.2011

Вы также можете ознакомиться со статьей по этому поводу автором предложения HTML5 SecureStore

person Cbe317    schedule 15.04.2010

Если вы храните данные на компьютере пользователя, пользователь всегда может их прочитать, независимо от того, насколько сильно вы их шифруете [при условии, что вы не используете хэш...]

Конфиденциальные данные всегда поступают на сервер.

person Warty    schedule 15.04.2010
comment
Не обязательно. Если зашифрованные данные могут быть расшифрованы только с помощью ключа, который вы должны каждый раз получать с сервера (т. е. он не хранится нигде в JS или на странице), и если сервер предоставляет ключ только тогда, когда пользователь надежно аутентифицирован , то между законными сеансами пользователя локально зашифрованные данные защищены. - person Mr. TA; 16.02.2013
comment
Хеширование также не является шифрованием. - person Nisk; 28.04.2013
comment
@drogon конечно, но что-то лучше, чем ничего - person Mr. TA; 18.12.2014