LocalStorage обычно используется приложениями. Разве это не означает, что ваши ценности могут быть изменены или удалены другими приложениями? Или используется какое-то пространство имен, чтобы значения сохранялись на основе каждого домена и не подвергались риску вмешательства? Подсказки будут оценены.LocalStorage обычно используется приложениями, поэтому как избежать случайного удаления данных?
ответ
localStorage
уникален для каждого происхождения, поэтому является защищенным и не может вмешиваться другими веб-сайтами или приложениями.
spec специфически говорит
Объект LocalStorage обеспечивает
Storage
объект для происхождения.
Агенты пользователя должны иметь набор локальных областей хранения, по одному для каждого источник.Потребители должны иметь доступ к данным из локальных областей хранения только для причинам безопасности или по запросу пользователя.
Пользовательские агенты всегда должны избегать удаления данных во время сценария, который мог получить доступ к , что данные запущены.Когда атрибут LocalStorage доступен, агент пользователя должен запустить следующие шаги, которые известны как этапы инициализации объекта хранения :
Агент пользователя может бросить «SecurityError» DOMException и abort эти шаги вместо того, чтобы возвращать объект хранения, если запрос нарушает политические решения (например, если пользовательский агент настроен на , чтобы страница не сохранялась).
Если источник документа является непрозрачным источником, затем выбросьте DOMException "SecurityError" и прервите эти шаги.
Проверьте, чтобы увидеть, если агент пользователя выделил локальную область хранения данных для происхождение документа
Window
объекта, на котором был доступ атрибут .
Если это не так, создайте новую область хранения для этого происхождения.Верните объект хранения, связанный с местным хранилищем этого источника .
Каждый объект Document должен иметь отдельный объект для своего атрибута localStorageWindow
.
Обратите внимание, что "an origin" довольно конкретно определен, но для локального хранения это означает протокол, домен и порт должен соответствовать для двух конечных точек считать одного и того же происхождения
Почему факт, что это свойство «окна», обязательно означает, что он уникален по происхождению? Гипотетический объект 'sharedStorage' также может принадлежать' window', не так ли? (Конечно, вы правы, что 'localStorage' * уникально по происхождению, я не пытаюсь оспаривать это.) – nnnnnn
@nnnnnn - конечно, это возможно, но в целом' window' является глобальным, ни одно из его свойств разделены между другими «окнами», но я отредактировал ответ. – adeneo
Ну, '.localStorage' * * делится на несколько окон из того же домена, поэтому ... Во всяком случае, я просто придирчивы к формулировке, а отредактированная версия Это хорошо. – nnnnnn
* "Не имеет что означает, что ваши ценности могут быть изменены или удалены другими приложениями?«* - Учитывая, что он уникален для каждого домена, различные приложения в домене могут обмениваться данными друг с другом (возможно, случайно, если большая компания имела несколько групп разработчиков, работающих на разных приложениях/страницах в одном домене). – nnnnnn
@ nnnnnn. Для сайта, такого как 'github.com', если бы я мог запускать JS в своей области https://github.com/sideshowbarker/GitHub и используемом локальном хранилище или где бы то ни было, я мог бы связываться с данными на стороне клиента еще с учетной записью GitHub было какое-то приложение в их хранилище, и они могли общаться с любыми данными на стороне клиента, которые я сохранил из своей области, потому что мы оба будем запускать приложения под тем же 'https: // github.com' и спецификации для локального API хранилища и, в основном, всех других клиентских API для веб-платформы, не мешают этому. Потому что все они для каждого источника. – sideshowbarker
Ладно, спасибо. Не могли бы вы предложить добавить идентификатор приложения для каждого значения localStorage, связанного с моим pp? – Grateful