2013-05-05 3 views
1

Да, не совсем уверен, что за титул, чтобы дать это. Но сейчас у меня была случайная мысль, и я даже не знаю, возможно ли это, я бы предположил, но не надеялся, что кто-то может окончательно сказать мне «да/нет».jQuery JavaScript есть способ прослушивания файлов cookie

Общий вопрос исходит из концепции прослушивания событий в DOM, что заставило меня думать, возможно ли это с помощью печенья. Зная, что у меня есть файл cookie, который хранится как переменная, вообще говоря, когда загружается страница. Я могу сравнить его с чем-то в событии, которое он изменил. У меня есть 2 файла cookie, которые не должны меняться, если они не удаляются скриптом. Поэтому я хочу послушать их, посмотреть, не изменились ли они, как позволяет говорить, что пользователь входит в браузер и каким-то образом изменяет значение. Если это произойдет, я бы хотел сделать что-то на этом основании.

Я знаю, что я ничего не могу поделать с ними, физически меняя что-либо с помощью браузера firebug или другой консоли. Но, надеемся узнать

var myCookie = cookie;

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

Это возможно даже в отдаленной перспективе? есть ли способ прослушивания изменения файла cookie, как и для большинства элементов DOM, или это сон мечты и проблема безопасности с уровня браузера, который невозможно контролировать?

+0

В 2022 году выйдет сокет-печенье, оно будет полностью асинхронным и отправит контент, поскольку он добавлен! Зачем вам это нужно, разве вы не знаете, изменили ли вы свои файлы cookie или нет? – adeneo

+0

Похоже на другую XY-проблему. Зачем тебе это надо? Какова первоначальная задача? – zerkms

+0

Справа. Почему вы хотите понаблюдать за кукисами ... Они не предназначены для хранения в реальном времени, а для хранения информации через сеансы на одной машине. Я понимаю вашу точку зрения, но тогда я думаю, что есть лучшая альтернатива использованию таких файлов ... например, когда вы действительно нуждаетесь в них или покидаете сайт, сравниваете значения и делаете соответственно. – Kiruse

ответ

1

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

Возможные альтернативные решения я могу думать о том, являются:

  1. Хранить данные на стороне сервера, где вы управляете безопасности и безопасности хранения. Вам потребуется либо система входа в систему, либо вы можете однозначно использовать cookie браузера (например, корзины покупок), чтобы вы знали, какие серверные данные принадлежат этому браузеру. Тогда у пользователя никогда не будет возможности изменять данные без вашего участия.
  2. Храните данные в нескольких местах, а затем сравните их с каждого места. Это не мешает определенному хакеру в конечном счете выяснить вашу систему, но это делает ее намного сложнее, чем просто редактирование значения cookie. Например, вы можете сохранить это значение в нескольких файлах cookie и в локальном хранилище. Даже во время вспышки можно хранить файлы cookie. Обратите внимание, что это затенение больше, чем фактическая безопасность, но это может лишить кого угодно, кроме действительно определенного хакера.
  3. Шифровать и проверять данные, чтобы их было легко отредактировать, не указав, что они были отредактированы или кто-то сначала не определился с вашими алгоритмами шифрования или контрольной суммы. Опять же, это затенение, но оно предотвращает случайное редактирование файлов cookie.

Сохранение данных на вашем сервере является единственным вариантом, который обеспечивает реальную безопасность.


Если вы просто хотите увидеть, если куки изменяются при загрузке вашей страницы, то вы можете просто загрузить значение куков во время загрузки страницы в переменный, а затем периодически опрашивать значение куков с setInterval() в см., если он был изменен.Или, если вы только хотите знать, была ли она изменена в определенных точках исполнения на вашей странице (например, перед отправкой формы), вы можете просто проверить текущее значение cookie по сравнению с исходной переменной в эти моменты времени.

Смежные вопросы