Я хочу внедрить httpOnly на своих устаревших классических сайтах ASP. Кто-нибудь знает, как это сделать?
Как именно вы настраиваете httpOnly Cookies в ASP Classic?
Ответы (5)
Response.AddHeader "Set-Cookie", "mycookie=yo; HttpOnly"
Другие параметры, такие как expires
, path
и secure
, также могут быть добавлены таким же образом. Я не знаю никакого волшебного способа изменить всю вашу коллекцию печенья, но я могу ошибаться.
Если вы запускаете свои классические веб-страницы ASP в IIS 7/7.5, вы можете использовать модуль перезаписи URL-адресов IIS, чтобы написать правило, чтобы сделать ваши файлы cookie только HTTP.
Вставьте следующее в раздел вашего 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 в файлах cookie с идентификатором сеанса, по крайней мере, чтобы помочь предотвратить атаки XSS.
Кроме того, в настоящее время (2-11-2013) все основные браузеры поддерживают ограничение HTTPOnly для файлов cookie. Сюда входят текущие версии IE, Firefox, Chrome и Safari.
Подробнее о том, как это работает и поддерживается различными версиями браузеров, см. здесь: https://www.owasp.org/index.php/HTTPOnly
Вам необходимо добавить «;HttpOnly» в коллекцию файлов cookie Response.
Если вы используете IIS7 или IIS7.5 и устанавливаете надстройку перезаписи URL-адресов, вы можете сделать это. Вы можете создать правило перезаписи, которое добавляет 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>
HttpOnly очень мало делает для повышения безопасности веб-приложений. Во-первых, он работает только в IE (Firefox «поддерживает» его, но в некоторых ситуациях все еще раскрывает файлы cookie для Javascript). Во-вторых, это только предотвращает атаку "драйва" на ваше приложение; он ничего не делает, чтобы предотвратить атаку межсайтового скриптинга от сброса паролей, изменения адресов электронной почты или размещения заказов.
Стоит ли использовать его? Конечно. Это не причинит тебе вреда. Но есть 10 вещей, которые вы должны обязательно сделать, прежде чем начинать возиться с HttpOnly.