После обеспечения безопасности файлов 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;
}