Веб-хранилище HTML5: могут ли разные веб-сайты перезаписывать данные друг друга на компьютере пользователя?

У меня есть несколько вопросов относительно концепции хранилища HTML5. Я просмотрел спецификацию w3c, книги и учебные пособия по тому же самому, но все же я немного не понимаю некоторые концепции:

Предположим, что я получаю доступ к веб-сайту A. В моем браузере выполняется код JavaScript, который устанавливает пару ключ-значение, скажем, ('username','deepak'). Затем я обращаюсь к веб-сайту B, который также добавляет пару ключ-значение в локальное хранилище как ('username','mahalingam').

  • Как они будут различаться?
  • Будет ли веб-сайт B переопределять значение, установленное веб-сайтом A в моем локальном хранилище?
  • Как мы можем гарантировать, что веб-сайт не сотрет все мое локальное хранилище?

person codingsplash    schedule 15.09.2012    source источник
comment
localStorage зависит от домена, каждый домен не может читать/записывать друг друга в localStorage.   -  person Neil    schedule 15.09.2012


Ответы (1)


Конфиденциальность локального хранилища

Сайт A и сайт B будут иметь собственное локальное хранилище. Обычно вам приходится хранить определенную информацию в базе данных сервера и синхронизировать ее с локальным хранилищем.

Я бы использовал локальное хранилище в качестве кеша, чтобы один раз получать данные и обновлять их с определенным интервалом в зависимости от того, когда я захочу аннулировать кеш. Например, вы можете синхронизироваться с сервером, когда пользователь А выйдет из системы, а пользователь Б захочет войти в систему.

Ознакомьтесь с разделом Конфиденциальность в спецификации HTML5 для веб-хранилища.

Дополнительная информация и ресурсы здесь: HTML5 Rocks.

Тестирование

Я бы предложил использовать локальную настройку сервера, такую ​​как Linux/Mac/Windows, Apache, MySQL, стек PHP (LAMP/MAMP/WAMP) для тестирования на локальном хосте (127.0.0.1).

Большинство браузеров ограничивают вас 5 МБ на домен для каждого окна и вкладки из-за рекомендации спецификации HTML5.

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

Альтернативой может быть создание расширения Chrome. Вы можете прочитать больше информации об этом здесь:

person Alerty    schedule 15.09.2012
comment
Спасибо за ответ. У меня есть еще один вопрос. Если мне нужно протестировать его в моей локальной системе только для целей обучения, тогда я буду использовать одно и то же локальное хранилище для каждого теста, верно? Кроме того, каждый домен получит 5 МБ или все 5 МБ? - person codingsplash; 15.09.2012
comment
Браузер различает сайты по домену. Если ваш тестовый сайт работает на локальном хосте, а рабочий сайт — на example.com, эти серверы получат разные хранилища. Возможно, изменение файла hosts поможет вам заставить браузер использовать то же хранилище. - person Markus Unterwaditzer; 15.09.2012
comment
Я обновил свой ответ возможными решениями для целей тестирования. - person Alerty; 15.09.2012