Вы можете использовать HttpOnly, который запрещает клиентскому скрипту доступ к cookie через свойство document.cookie. Файлы cookie по-прежнему будут передаваться в обе стороны, но будут недоступны для сценариев и не будут украдены.
В ASP.NET 1.1 добавьте в Global.asax следующий код:
protected void Application_EndRequest(Object sender, EventArgs e)
{
foreach(string cookie in Response.Cookies)
{
const string HTTPONLY = ";HttpOnly";
string path = Response.Cookies[cookie].Path;
if (path.EndsWith(HTTPONLY) == false)
{
//force HttpOnly to be added to the cookie
Response.Cookies[cookie].Path += HTTPONLY;
}
}
}
С ASP.NET 2.0 и выше вы можете использовать web.config:
<system.web>
<httpCookies httpOnlyCookies="true" />
</system.web>
Если безопасность является чем-то очень важным в вашей системе, лучшим подходом является инвестирование в SSL (Secure Sockets Layer) соединение с вашим сайтом. Затем вы можете установить свойство cookie, при котором cookie будет передаваться только при наличии SSL-соединения. SSL не защищает файл cookie от чтения или манипулирования им, пока он находится на компьютере пользователя, но он предотвращает чтение файла cookie во время передачи, поскольку файл cookie зашифрован.
Этот подход требует получения сертификата SSL.
Это можно сделать в элементе httpcookies web.config.
<system.web>
<httpCookies requireSSL="true" />
</system.web>
Если соединение не SSL, cookie не отправляется на сервер.
Подробнее:
FAQ по файлам cookie ASP.NET
Проектирование и развертывание защищенных веб-приложений с ASP.NET 2.0 и IIS 6.0