2011-01-14 4 views
0

У меня есть сайт с защищенной областью (https) и остальной частью сайта, который является http. Все работает замечательно, используя переменные сеанса для входа в систему на стороне https, а охраняемая область функционирует чудесно.Переменные PHP SESSION между https и http

Моя проблема: У меня есть кнопка «войти/зарегистрироваться» в верхней части каждой страницы http на сайте. Мне бы хотелось, чтобы это отражало статус входа в систему и менялось на «выход из системы», а также некоторые другие введенные в систему кнопки, которые просто перенаправляют на страницы https. Я не пытаюсь каким-либо образом манипулировать данными или другой защищенной информацией на страницах http.

В IE8 https созданная переменная сеанса для входа в систему обнаружена в http (на домашней странице), и она правильно отображает альтернативную ссылку «выйти из системы». Однако во всех других браузерах переменная сеанса отсутствует в http. Какой самый простой способ исправить это, не создавая огромного недостатка безопасности? О, и URL-адреса такие же, кроме http и https.

ответ

1

Один простой способ сделать это, что многие сайты используют, чтобы кнопка фактически загружалась на стороне клиента через скрипт, который делает запрос на URL-адрес HTTPS, чтобы определить, зарегистрирован ли пользователь, а не имея HTML для этого, он будет частью страницы, обслуживаемой HTTP.

+0

Это звучит идеально, но у меня возникли проблемы с его реализацией. У меня есть файл logincheck.php, который вызывается через https: и возвращает статус входа (но не конфиденциальную информацию). Я попытался использовать загрузку jquery для вызова страницы, это не сработало. Я могу возвращать данные с помощью cURL в php, но сценарий всегда возвращает состояние, не зарегистрированное, даже когда я вошел в систему. Если я запускаю скрипт logincheck напрямую, не будучи вызванным через cURL в HTTP, он работает правильно. Есть идеи? –

+0

Используйте Firebug или инструменты разработчика Chrome, чтобы просмотреть фактический отправленный запрос AJAX, какие файлы cookie отправляются вместе с ним и т. Д., И что такое ответ. – Amber

1

Если вы хотите защитить сессионный файл cookie, вы должны убедиться, что браузер отправляет только cookie в HTTPS. Поэтому любой способ определить статус входа в систему из HTTP-связи небезопасен.

I +1 решение Amber опубликовано.

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