Я создаю сайт / приложение, которое будет отображаться в фрейме. Я делал это много раз раньше, и это вызывало у меня множество проблем в прошлом ... Основная проблема - блокировка междоменных файлов cookie.
Я знаю, что это вопрос использования того же имени корневого домена и настройки document.domain. Но, учитывая прекрасное новое законодательство ЕС о файлах cookie (о боже, они неубедительные) и общие направления, в которых движутся браузеры в отношении конфиденциальности и безопасности, использование файлов cookie сеанса в iframes, вероятно, будет становиться все более и более проблематичным. Поэтому, чтобы немного защитить сайт в будущем, я бы предпочел реализовать его без использования файлов cookie.
Реализация, которую я имею до сих пор, просто устанавливает значение строки запроса, которое передается на все страницы. Я полагаю, что это то же самое, что и функция сеанса без файлов cookie в ASP.NET. Однако это подразумевает, что если кто-то использует общедоступный компьютер, другой человек, использующий его через мгновение, может найти свой URL (включая идентификатор сеанса) и продолжить сеанс. Поскольку этот сайт имеет дело с конфиденциальными данными, это не приемлемо. Функция без печенья в ASP.NET страдает той же лазейкой (что делает меня немного пессимистичным в поиске решения).
Я занимаюсь разработкой в .NET, но это должно быть общей проблемой для всех сред.
Короткая версия:
Кто-нибудь знает, как поддерживать состояние сеанса на сайте без файлов cookie, работающем внутри iframe (возможно, также с некоторыми рекомендациями). Крайне важно, чтобы, когда пользователь закрывает свой браузер, сеанс должен быть фактически уничтожен, поэтому никакая информация не раскрывается в списке истории браузера - как это было бы с обычным файлом cookie сеанса.
Возможное решение
Я рассматриваю что-то в этом духе. Но это далеко не оптимально.
- Страница постоянно отправляет на сервер ajax-запрос keep-alive
- Сервер обновляет временную метку с последним вызовом keep-alive для идентификатора, хранящегося в строке запроса
- Если временная метка keepalive устарела, скажем, на 10 секунд, данные, связанные с идентификатором, уничтожаются, и пользователь получит сообщение «Тайм-аут сеанса - начните сначала», если он повторно посетит URL с уже мертвым идентификатором .