Очистка куки через JS, но PHP все еще обнаруживает его - PullRequest
0 голосов
/ 11 октября 2018

Я устанавливаю файл cookie "SESSION" через JS:

var d = new Date();
d.setTime(d.getTime() + (2*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cookie.name + "=" + cookie.value +";"+ expires + "; 
path="+cookie.path+";domain="+data.shared_domain+";";

Затем я удаляю файл cookie с истечением срока его действия через JS:

document.cookie = "SESSION=; expires=Thu, 01 Jan 1971 00:00:01 UTC; path=/;domain="+domain;

После выполненияпри этом console.log(document.cookie) вернет все остальные файлы cookie, кроме этого, чего я и ожидал.

С другой стороны, я выполняю проверки сеансов через PHP, пытаясь прочитать файл cookie, выполнив $_COOKIE["SESSION"],

isset ($ _ COOKIE ["SESSION"]) вернет true, и я могу прочитать старое значение cookie.Независимо от того, сколько раз я обновляю страницу, она все равно читает.

Я неправильно понимаю, как работают куки?Есть ли другой способ проверить, истек ли срок действия файла cookie в PHP?

Обновление: Да, проблема в том, что файл cookie имеет флаг HttpOnly.

Так что теперь я пытаюсь удалить его через PHP.Основываясь на этом другом вопросе , я делаю:

setcookie("SESSION", "", time()-3600);
if (isset($_COOKIE['SESSION'])) unset($_COOKIE['SESSION']);

Когда я закончу, я проверяю, что все прошло быстро var_dump($_COOKIE), и да, его нигде нетвидел.

За исключением того, что Chrome все еще видит его (срок его действия истек в 1969 году), и когда я перехожу на другую часть сайта, проверка на наличие этого cookie возвращает значение.

Я добавлю еще один фрагмент информации на случай, если что-то изменится: этот файл cookie используется sub.domain.com и app.sub.domain.com.Когда я устанавливаю его, я устанавливаю его для .domain.com.И я отключил его для .domain.com.

Как мне избавиться от этого печенья навсегда?

1 Ответ

0 голосов
/ 11 октября 2018

Непонятно, как вы создаете куки в первую очередь;Я предполагаю использовать обработчик сеанса PHP, но вы не указали.

В любом случае, он, скорее всего, генерируется с настройками безопасности cookie, которые ограничивают доступ к нему из JavaScript.Этот параметр называется httpOnly и обычно используется для файлов cookie сеанса и других аналогичных данных файлов cookie, которые предназначены для использования только кодом на стороне сервера.

Если этот параметр cookie установлен (и для любого хорошего сеанса)обработчик установит его), тогда вы просто не сможете установить или удалить этот cookie из браузера;Вы должны будете сделать это из своего PHP-кода.

Для получения дополнительной информации по этой теме см. эту статью в Википедии: https://en.wikipedia.org/wiki/Secure_cookie

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...