Я обнаружил странную проблему и понятия не имею, какой обходной путь необходимо применить.
Одним из самых простых улучшений безопасности является установка всех файлов cookie как HttpOnly и Secure.Я знаю, что если вы открываете веб-сайт с безопасным файлом cookie в незащищенном режиме (т. Е. Используется схема HTTP), то файл cookie игнорируется.Но наш случай таков:
Допустим, есть URL-адрес, по которому можно войти в систему: contoso.com/AutoLogin/
Если я открою его в режиме HTTPS, тогда файл cookie AUTH будетустановить и это безопасно:
GET https://contoso.com/AutoLogin/<user token>
Response: Set-Cookie: .ASPXAUTH=<cookie is here>; expires=Fri, 11-Oct-2019 14:51:40 GMT; path=/; secure; HttpOnly
Это совершенно нормально.Я вижу печенье в Dev Tools.Теперь в том же сеансе браузера, и я пытаюсь открыть тот же URL, но в HTTP-режиме.Запросы cookie-файлов больше не содержат AUTH-cookie - это ясно и предсказуемо из-за природы безопасных cookie-файлов.
GET http://contoso.com/AutoLogin/<user token>
Response: .ASPXAUTH=<here comes the cookie>; expires=Fri, 11-Oct-2019 14:54:07 GMT; path=/; HttpOnly
- no Безопасный флаг на этот раз - ОК.
Однако файл cookie не установлен, и все последующие запросы не имеют файла AUTH.Подтверждено поведение по крайней мере в Chrome и Firefox (не проверялось в других браузерах).
Как вы могли заметить, серверная часть реализована с использованием ASP.NET MVC.Возможно, может помочь тот факт, что запросы GET являются запросами AJAX.
Спасибо за помощь.