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

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

Я сделал несколько изменений, чтобы защитить куки.

  • 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 для сайта: при начальной загрузке страницы

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

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

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

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

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

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

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

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

1 ответ

Взгляните на эту похожую ветку о SO. Как обезопасить файл cookie 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;
}
Другие вопросы по тегам