2010-02-11 5 views
6

В моем веб-проекте setting to turn on httpOnlyCookies нет. По умолчанию это неверно. Также нет места в коде, где cookie устанавливается на HttpOnly. Однако, когда я просматриваю сайт, я вижу, что cookie ASP.NET_Session передается как HttpOnly. Как он настроен на HttpOnly?Как установить HttpOnly для ASP.NET_SessionId cookie?

ответ

14

Файлы cookie ASP.NET для сеансов cookie - это только HTTP, независимо от установки httpOnlyCookies, связанной с вашим вопросом, поскольку это сжигается в ASP.NET. Вы не можете переопределить это.

Если покопаться в System.Web.SessionState.SessionIDManager класса в сборке System.Web код для создания ASP.NET куки сессии выглядит так:

private static HttpCookie CreateSessionCookie(string id) 
{ 
    HttpCookie cookie = new HttpCookie(Config.CookieName, id); 
    cookie.Path = "/"; 
    cookie.HttpOnly = true; // <-- burned in 
    return cookie; 
} 
+2

найдена документация здесь: http://msdn.microsoft.com/en-us/library/aa480476.aspx "HttpOnly. Это свойство указывает, можно ли получить доступ к cookie клиентским скриптом. В ASP.NET 2.0 это значение всегда установлено в true. » –

+1

@dev - я просто вникнул в сборку System.Web.dll, чтобы заглянуть :) – Kev

+0

Также важна часть прямо под ней. Старые браузеры не поддерживают HttpOnly и могут игнорировать файл cookie или игнорировать атрибут, последний по-прежнему оставляет ваш сайт открытым для атак XSS. –

1

Это HttpOnly поэтому ваш куки сессии не могут быть изменены клиентом с JavaScript.

+0

Правильно. Я знал эту часть. Я перефразировал свой вопрос от «почему» до «как он установлен?». –

Смежные вопросы