Установка 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, но проблема заключается только в том, что если вы пытаетесь пройти проверку безопасности, они часто не принимают обновленное значение для печенья, только начальный.

Другие вопросы по тегам