После защиты файлов cookie ASPXAUTH и ASP.NET_SessionId это правильное поведение?

В ходе теста на проникновение мы получили уведомление о том, что наш веб-сайт не защищает файлы cookie ASPXAUTH и ASP.NET_SessionId.

Я внес несколько изменений для защиты файлов cookie.

  • 1) Добавлен атрибут requireSSL="true" в элемент System.Web -> Authentication -> Forms в web.config.
  • 2) В коде, который очищает файлы cookie ASP.NET_SessionId и ASPXAUTH при первоначальном входе в систему и выходе из системы, что делает их безопасными и только HTTP.
  • 3) В метод Application_EndRequest Global.asax добавлен код, который специально устанавливает для файлов cookie ASP.NET_SessionId и ASPXAUTH в Response.Cookies значения Secure и HttpOnly.

Я не могу понять, почему второй имеет значение, но без него файл cookie ASP.NET_SessionId никогда не отображается в объекте ответа как безопасный.

Используя инструменты разработчика Chrome, я сделал снимок экрана в несколько моментов времени, и некоторые действия выглядят для меня неожиданными. Если бы кто-то мог взглянуть на это и сообщить мне, правильно ли все работает, я был бы очень признателен.

Этот снимок экрана был сделан при начальной загрузке страницы после очистки файлов cookie для сайта: При начальной загрузке страницы

Два файла cookie SessionId кажутся мне странными, почему один безопасный, а другой нет?

Этот снимок экрана был сделан после нажатия кнопки входа на сайт:после нажатия входа

Это имеет для меня еще меньше смысла, почему файл cookie ASP.NET_SessionId в запросе не помечен как безопасный или HttpOnly, это ожидаемое поведение? Я предполагаю, что файл cookie SessionId, отправленный в ответ, не является правильным поведением

Этот снимок экрана был сделан после перехода по ссылке на сайте для просмотра новой страницы:введите здесь описание изображения< /а>

Если возможно, это имеет еще меньше смысла для меня. Два рассматриваемых файла cookie отправляются в запросе, оба не установлены HttpOnly или Secure. Это правильное поведение? Кроме того, ни один из файлов cookie не отображается в ответе правильно?

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

Любая помощь, которая может быть оказана, будет очень признательна.

Спасибо, - Натан


person Nathan Hood    schedule 19.02.2019    source источник


Ответы (1)


Взгляните на этот похожий поток на SO Как защитить ASP.NET_SessionId куки?

Вы устанавливаете безопасный флаг файла cookie во время начала сеанса? Что-то вроде этого.

protected void Session_Start(Object sender, EventArgs e)
{
// secure the ASP.NET Session ID only if using SSL
// if you don't check for the issecureconnection, it will not work.
if (Request.IsSecureConnection == true)
     Response.Cookies ["ASP.NET_SessionID"].Secure = true;
}
person Rasik Jain    schedule 20.02.2019
comment
Это несколько изменило поведение, но я все еще не уверен, что это правильно. Это после начальной загрузки страницы: i.imgur.com/KSUISU1.jpg Это после нажатия войдите: i.imgur.com/l7uxSPh.jpg Это после загрузки новой страницы: i.imgur.com/IcTkiav.jpg Меня беспокоит третье изображение, потому что ни одно из для файлов cookie по-прежнему установлены флаги httpOnly или безопасные. - person Nathan Hood; 20.02.2019
comment
Трудно сказать, не глядя на код. Я бы предложил отключить код везде, где вы манипулируете. Попробуйте включить пошагово. Также перед тестированием попробуйте очистить куки из хрома. Надеюсь, это сработает для вас. - person Rasik Jain; 21.02.2019
comment
Я делал все это, много, много раз. Проблема, которую я пытаюсь решить, заключается не в том, правильный ли мой код. Я пытаюсь определить, правильно ли это поведение. Особенно отсутствующие теги Secure и HttpOnly в запросе на изменение страницы. - person Nathan Hood; 22.02.2019