Установка HttpOnly=true в файле cookie сессионного идентификатора ASP 1.1
У меня есть клиент, который запускает свой классический ASP-сайт под IIS 6.0. Веб-сайт предназначен для ASP.NET 2.0 на вкладке конфигурации ASP.NET. Недавнее сканирование PCI его сайта не позволяет ему с уязвимостью HttpOnly в его файле cookie ASPSESSIONID.
Я установил ISAPI.dll, который успешно устанавливает HttpOnly для всех созданных вручную файлов cookie, но файл cookie ASPSESSIONID по какой-то причине не выполняется.
Я установил web.config со следующей конфигурацией:
<system.web>
<httpCookies httpOnlyCookies="true" />
</system.web>
Эта конфигурация, похоже, ни на что не влияет. Я подозреваю, что хотя веб-сайт предназначен для ASP.NET 2.0, это, в общем-то, классическое приложение ASP, а HttpOnly вообще не поддерживается.
Веб-сайт клиента использует global.asa
вместо global.asax
, Это исключает использование Application_EndRequest для добавления HttpOnly.
Я могу загрузить сайт клиента с помощью Firefox/Firebug и посмотреть файлы cookie. Созданные вручную получают HttpOnly, но файл cookie ASPSESSIONID не является HttpOnly.
Кто-нибудь знает, как заставить файл cookie ASPSESSIONID быть HttpOnly с учетом этого сценария установки?
2 ответа
Файл cookie сеанса ASP не может быть изменен классическим кодом ASP, поэтому для IIS 6 вам потребуется модуль ISAPI, который переписывает файлы cookie.
Установка HTTPONLY для классического файла cookie сеанса Asp
http://msdn.microsoft.com/en-us/library/ms972826
Обходное решение JavaScript на стороне клиента
http://ko-lwin.blogspot.com/2010/12/how-to-secure-classic-asp-session-id.html
Request.ServerVariables("HTTP_COOKIE") получит текущее значение файла cookie, которое можно затем отправить с обновленным файлом cookie, добавив HttpOnly, но проблема заключается только в том, что если вы пытаетесь пройти проверку безопасности, они часто не принимают обновленное значение для печенья, только начальный.