Вы все еще можете получить доступ программно.Они удалили window.localStorage
.Это собственное свойство экземпляров окна, но это не свойство данных, а средство доступа.Метод доступа get является фирменным методом, который возвращает значение localStorage
любого получателя, у которого есть внутренний слот localStorage
.Фактический внутренний слот localStorage
текущего окна все еще существует, поэтому вам нужна еще одна фирменная функция get localStorage
.К счастью, вы можете получить это многими способами.
function getLocalStoragePropertyDescriptor() {
const iframe = document.createElement('iframe');
document.head.append(iframe);
const pd = Object.getOwnPropertyDescriptor(iframe.contentWindow, 'localStorage');
iframe.remove();
return pd;
}
// You can use pd.get.call, pd.get.apply, or use Reflect.apply; but the simplest
// thing to do is probably to just restore the original property:
Object.defineProperty(window, 'localStorage', getLocalStoragePropertyDescriptor());
window.localStorage.heeeeey; // yr old friend is bak
Если это дело гонки вооружений, сторона, заинтересованная в сокрытии localStorage, может попытаться исправить каждый метод и метод доступа через DOM, который возвращает ссылку на объект окна.,Даже если они преуспели, хотя, последнее слово всегда на стороне пользователя: скрипт содержимого расширения браузера, манифест которого объявляет, что он должен быть оценен перед любым другим кодом.(Вот почему возможна блокировка рекламы.)
Хранилище, будь то экземпляры sessionStorage или localStorage, не предназначено для хранения конфиденциальных данных.Это вообще не защищено.Кажется, что эта попытка скрыть это намек на то, что он может быть использован неправильно.