Для пользователей ASP.NET MVC 3, которыми мы являемся, вы также можете справиться с этим с помощью следующего GlobalFilter, который я собрал, который затем может защитить любой файл cookie, отправленный обратно: -
namespace MyNamespace
{
public class SecureCookiesAttribute : FilterAttribute, IResultFilter
{
public void OnResultExecuting(ResultExecutingContext filterContext)
{
foreach (string cookieName in filterContext.HttpContext.Response.Cookies.AllKeys)
filterContext.HttpContext.Response.Cookies[cookieName].HttpOnly = true;
if (filterContext.HttpContext.Request.IsLocal)
return;
foreach (string cookieName in filterContext.HttpContext.Response.Cookies.AllKeys)
filterContext.HttpContext.Response.Cookies[cookieName].Secure = true;
}
public void OnResultExecuted(ResultExecutedContext filterContext) { }
}
}
Это установит флаг HTTPOnly для любого файла cookie независимо от того, тогда, если запрос поступил из нелокального источника, он также установит флаг безопасности.Это позволяет нам выполнять локальную отладку по протоколу HTTP, а не по протоколу HTTPS (но вы можете просто снять эту проверку, если все, что вы делаете, выполняется по протоколу HTTPS).