Можно ли эмулировать смерть файла cookie на сайте без файлов cookie? - PullRequest
0 голосов
/ 31 августа 2011

Я создаю сайт / приложение, которое будет отображаться в фрейме. Я делал это много раз раньше, и это вызывало у меня множество проблем в прошлом ... Основная проблема - блокировка междоменных файлов cookie.

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

Реализация, которую я имею до сих пор, просто устанавливает значение строки запроса, которое передается на все страницы. Я полагаю, что это то же самое, что и функция сеанса без файлов cookie в ASP.NET. Однако это подразумевает, что если кто-то использует общедоступный компьютер, другой человек, использующий его через мгновение, может найти свой URL (включая идентификатор сеанса) и продолжить сеанс. Поскольку этот сайт имеет дело с конфиденциальными данными, это не приемлемо. Функция без печенья в ASP.NET страдает той же лазейкой (что делает меня немного пессимистичным в поиске решения).

Я занимаюсь разработкой в ​​.NET, но это должно быть общей проблемой для всех сред.

Короткая версия:

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

Возможное решение

Я рассматриваю что-то в этом духе. Но это далеко не оптимально.

  1. Страница постоянно отправляет на сервер ajax-запрос keep-alive
  2. Сервер обновляет временную метку с последним вызовом keep-alive для идентификатора, хранящегося в строке запроса
  3. Если временная метка keepalive устарела, скажем, на 10 секунд, данные, связанные с идентификатором, уничтожаются, и пользователь получит сообщение «Тайм-аут сеанса - начните сначала», если он повторно посетит URL с уже мертвым идентификатором .

1 Ответ

2 голосов
/ 31 августа 2011

Я знаю, что это вопрос использования того же имени корневого домена и настройки document.domain

Нет - использование единого входа является более разумным подходом (хотя по-прежнему используются файлы cookie)

Но, учитывая прекрасное новое законодательство ЕС о печеньках (о боже, они неубедительные)

Go Прочитайте его , особенно примечания 25 и 26. Существует огромное количество предложений о выходе. Хорошей практикой и сервисом по-прежнему является предоставление страницы с подробной информацией о конфиденциальности, и это может быть достаточным или даже превышать любые обязательства по закону. Но разработайте свой сайт так, чтобы он определял, где пользователь не принимает файлы cookie, и заставлял его реагировать соответствующим образом.

Я бы предпочел реализовать это вообще без использования файлов cookie.

Поверь мне, а ты нет. Вы упомянули о распространении идентификаторов сеансов через URL - это единственное, что приближает к замене, но помимо упомянутых вами проблем безопасности, они также очень хрупкие и ограничительные (например, для ваших вызовов ajax вы собираетесь необходимо проанализировать текущий URL, чтобы извлечь идентификатор сеанса и вставить его в последующий запрос).

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

...