Как именно вы настраиваете httpOnly Cookies в ASP Classic?

Я собираюсь реализовать httpOnly на своих устаревших классических сайтах ASP. Кто-нибудь знает, как это сделать?

SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
Один-единственный вредоносный запрос может нанести ущерб вашему бизнесу. Уязвимости вашего кода могут привести к:
13
0
31 756
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Вам необходимо добавить «; HttpOnly» в коллекцию файлов cookie ответа.

Ответ принят как подходящий

Response.AddHeader "Set-Cookie", "mycookie=yo; HttpOnly"

Таким же образом можно добавить другие опции, такие как expires, path и secure. Я не знаю волшебного способа изменить всю вашу коллекцию файлов cookie, но могу ошибаться.

HttpOnly очень мало делает для повышения безопасности веб-приложений. Во-первых, он работает только в IE (Firefox «поддерживает» его, но в некоторых ситуациях все же раскрывает файлы cookie для Javascript). Во-вторых, это предотвращает только «проездную» атаку на ваше приложение; он ничего не делает, чтобы помешать атаке с использованием межсайтовых сценариев сбросить пароли, изменить адреса электронной почты или разместить заказы.

Стоит ли его использовать? Конечно. Тебе это не повредит. Но есть 10 вещей, которые вы должны сделать, прежде чем начинать возиться с HttpOnly.

Да, я знаю. Но добавление еще одного уровня защиты никогда не помешает.

Eduardo Molteni 28.05.2009 18:09

Я не верю, что это правда сейчас, в 2012 году

Philluminati 16.08.2012 20:25

Если вы запускаете свои классические веб-страницы ASP на IIS 7 / 7.5, вы можете использовать модуль IIS URL Rewrite, чтобы написать правило, чтобы ваши файлы cookie были только HTTPOnly.

Вставьте следующее в раздел вашего web.config:

<rewrite>
    <outboundRules>
        <rule name = "Add HttpOnly" preCondition = "No HttpOnly">
            <match serverVariable = "RESPONSE_Set_Cookie" pattern = ".*" negate = "false" />
            <action type = "Rewrite" value = "{R:0}; HttpOnly" />
            <conditions>
            </conditions>
        </rule>
        <preConditions>
            <preCondition name = "No HttpOnly">
                <add input = "{RESPONSE_Set_Cookie}" pattern = "." />
                <add input = "{RESPONSE_Set_Cookie}" pattern = "; HttpOnly" negate = "true" />
            </preCondition>
        </preConditions>
    </outboundRules>
</rewrite>

Подробности смотрите здесь: http://forums.iis.net/t/1168473.aspx/1/10

В фоновом режиме файлы cookie HTTPOnly необходимы по соображениям соответствия PCI. Специалисты по стандартам PCI (для защиты кредитных карт) заставляют вас использовать HTTPOnly в куки-файлах sessionID, по крайней мере, для предотвращения XSS-атак.

Кроме того, в настоящее время (2-11-2013) все основные браузеры поддерживают ограничение HTTPOnly на файлы cookie. Сюда входят текущие версии IE, Firefox, Chrome и Safari.

См. Здесь дополнительную информацию о том, как это работает, и о поддержке различными версиями браузеров: https://www.owasp.org/index.php/HTTPOnly

Response.AddHeader "Set-Cookie", ""&CStr(Request.ServerVariables("HTTP_COOKIE"))&";path=/;HttpOnly"&""

Если вы используете IIS7 или IIS7.5 и устанавливаете надстройку URL Rewriting, вы можете это сделать. Вы можете создать правило перезаписи, которое добавляет «HttpOnly» к любым исходящим заголовкам «Set-Cookie». Вставьте следующее в раздел <system.webServer> вашего web.config. Затем я использовал Fiddler, чтобы доказать результат.

С уважением, Джереми

    <rewrite>
        <outboundRules>
            <rule name = "Add HttpOnly" preCondition = "No HttpOnly">
                <match serverVariable = "RESPONSE_Set_Cookie" pattern = ".*" negate = "false" />
                <action type = "Rewrite" value = "{R:0}; HttpOnly" />
                <conditions>
                </conditions>
            </rule>
            <preConditions>
                <preCondition name = "No HttpOnly">
                    <add input = "{RESPONSE_Set_Cookie}" pattern = "." />
                    <add input = "{RESPONSE_Set_Cookie}" pattern = "; HttpOnly" negate = "true" />
                </preCondition>
            </preConditions>
        </outboundRules>
    </rewrite>

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