Chrome сохраняет файлы cookie с истекшим сроком годности - PullRequest
0 голосов
/ 24 июня 2019

ОБНОВЛЕНИЕ: я смог воспроизвести это в нашей производственной среде.Несмотря на установку даты истечения срока действия для этих файлов cookie равной -1 минуте (см. Код ниже), они надежно отображаются в браузере с истекшим сроком действия в десять минут.Теперь у меня есть один пользователь, сообщающий о поведении в IE11, но я все еще могу воспроизводить только в Chrome.Я протестировал Firefox и Safari без проблем.Изменилось ли в последнем обновлении Chrome способ обработки файлов cookie?

В соответствии с обновлением у меня теперь есть снимки экрана с ситуацией с файлами cookie.Вот где они привязываются.Обратите внимание на дату и время;звонок был сделан около 18: 09 по Гринвичу, поэтому даты истечения срока 18:07:57 верны.Ожидаемое поведение для этих файлов cookie истекает и исчезает автоматически.responseCookies

Вместо этого файлы cookie прикрепляются к ряду последующих вызовов.Вот пример.Покрытое печенье наверху не имеет отношения.enter image description here

Наконец, когда я проверяю файлы cookie в инструментах F12, я вижу дату истечения срока действия, не связанную с установленным сервером - примерно в 00:11:40 позже?Эти куки не были обновлены на сервере;с одной стороны, не было ни одного звонка, чтобы сделать это, ни звонка, который включал новые куки в своем ответе.С другой стороны, при обновлении эти куки-файлы будут возвращены как безопасные, а это не так.Итак, все, что я могу сделать вывод, это то, что Chrome неправильно обрабатывает дату истечения срока действия, которую устанавливает сервер.enter image description here

Исходное сообщение

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

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

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

Проблема устраняется путем удаления файлов cookie вручную или с помощью другого браузера.,Я не менял эту функциональность в веках.Я также не могу воспроизвести это локально, как и моя команда QA.Поэтому я подозреваю, что это как-то связано с недавним обновлением Chrome, возможно, тем, которое получили некоторые из наших конечных пользователей, а я нет (или, может быть, наоборот: у меня есть более новая версия, в которой исправлена ​​некоторая связанная ошибка).

Вот мой код с небольшим количеством скрытых имен.enter image description here

А вот скриншот от конечного пользователя, показывающий, что эти три файла cookie были прикреплены к ее браузеру Chrome.Верхняя строка закрыта, потому что это не имеет значения;домены покрыты, потому что они чувствительны, но они верны.Первые два файла cookie - HttpOnly, и ни один из них не является безопасным.

Исходя из того, когда конечный пользователь прислал мне этот снимок экрана, я бы предположил, что время истечения может быть через десять минут после того, как файл cookie был прикреплен - я неТочно знаю, но я получил письмо от нее до истечения срока действия.Таким образом, время истечения было установлено, чтобы быть где-то в будущем, а не 1 минуту в прошлом, как предполагалось в моем коде.logoutCookies

Можно предположить, что вычитания только 1 минуты уже недостаточно для надежного запуска предварительного истечения срока действия cookie.Я намерен изменить это на .AddDays (-1).Другое предположение состоит в том, что по какой-то причине получение файлов cookie с истекшим сроком действия, которые не заменяют хорошие (поскольку пользователь фактически не выполнил вход в систему при совершении этого вызова, см. Выше), вводит браузер в заблуждение относительно хранения файлов с истекшим сроком действия.Мое третье предположение, что это как-то связано с безопасными куки;наша производственная среда - HTTPS, а dev и QA - нет.Обратите внимание, что эти куки не являются безопасными, потому что они просто предназначены для истечения срока действия, но настоящие куки, которые они обычно заменяют, являются безопасными.

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

Большое спасибо за вашу помощь!

Язык: C #

Framework: ASP.NET 4.5.2

Примечание. Я использую класс .NET ApiController из System.Web.Http для этого действия, поэтому нет сеанса или состояния (я НЕ использую класс Controller из System.Web.Mvc).

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