您究竟如何在 ASP.NET 中配置 httpOnlyCookies?
Posted
技术标签:
【中文标题】您究竟如何在 ASP.NET 中配置 httpOnlyCookies?【英文标题】:How exactly do you configure httpOnlyCookies in ASP.NET? 【发布时间】:2010-09-07 04:56:46 【问题描述】:受这篇 CodingHorror 文章“Protecting Your Cookies: HttpOnly”的启发
你如何设置这个属性?网络配置中的某处?
【问题讨论】:
【参考方案1】:如果您使用的是 ASP.NET 2.0 或更高版本,您可以在 Web.config 文件中将其打开。在
<httpCookies httpOnlyCookies="true"/>
【讨论】:
这对我不起作用。我尝试了“借助 Rick 的道具(提到的博客文章中的第二条评论),这里是 httpOnlyCookies 上的 MSDN article。
底线是您只需在 web.config 的 system.web 部分中添加以下部分:
<httpCookies domain="" httpOnlyCookies="true|false" requireSSL="true|false" />
【讨论】:
顺便说一句 - 不要实际使用 domain="String" - 要么设置一个有效的域,要么忽略该属性。 @Dillie-O 什么会导致这个元素被锁定?当我在 web.config 文件中设置它时,我收到以下错误“元素 httpcookies 已被锁定在更高级别的配置中” @StackTrace - 您可以检查服务器本身上的 machine.config 文件,看看它是否有锁定的设置。【参考方案3】:如果您想在代码中执行此操作,请使用 System.Web.HttpCookie.HttpOnly 属性。
这直接来自 MSDN 文档:
// Create a new HttpCookie.
HttpCookie myHttpCookie = new HttpCookie("LastVisit", DateTime.Now.ToString());
// By default, the HttpOnly property is set to false
// unless specified otherwise in configuration.
myHttpCookie.Name = "MyHttpCookie";
Response.AppendCookie(myHttpCookie);
// Show the name of the cookie.
Response.Write(myHttpCookie.Name);
// Create an HttpOnly cookie.
HttpCookie myHttpOnlyCookie = new HttpCookie("LastVisit", DateTime.Now.ToString());
// Setting the HttpOnly value to true, makes
// this cookie accessible only to ASP.NET.
myHttpOnlyCookie.HttpOnly = true;
myHttpOnlyCookie.Name = "MyHttpOnlyCookie";
Response.AppendCookie(myHttpOnlyCookie);
// Show the name of the HttpOnly cookie.
Response.Write(myHttpOnlyCookie.Name);
在代码中执行此操作可让您有选择地选择哪些 cookie 是 HttpOnly 的,哪些不是。
【讨论】:
【参考方案4】:有趣的是,在 ASP.NET 2.0 中添加 <httpCookies httpOnlyCookies="false"/>
似乎并没有禁用 httpOnlyCookies
。查看这篇关于SessionID and Login Problems With ASP .NET 2.0的文章。
看起来 Microsoft 决定不允许您从 web.config 禁用它。检查这个post on forums.asp.net
【讨论】:
以上是关于您究竟如何在 ASP.NET 中配置 httpOnlyCookies?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 asp.net core mvc 中配置确认电子邮件令牌的生命周期
如何在 ASP.NET CORE 3.0 中配置路由以使用带有 [FromQuery] 参数的重载 [HttpGet] 方法?
ASP.NET 4.0尚未在Web服务器上注册。您需要手动将Web服务器配置为使用ASP.NET,这样您的网站才能正确运行。