您究竟如何在 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"/>

【讨论】:

这对我不起作用。我尝试了“”,但两种设置都不起作用。 @rolls 我也有同样的问题。您找到解决方案或原因了吗?【参考方案2】:

借助 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 中添加 &lt;httpCookies httpOnlyCookies="false"/&gt; 似乎并没有禁用 httpOnlyCookies。查看这篇关于SessionID and Login Problems With ASP .NET 2.0的文章。

看起来 Microsoft 决定不允许您从 web.config 禁用它。检查这个post on forums.asp.net

【讨论】:

以上是关于您究竟如何在 ASP.NET 中配置 httpOnlyCookies?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.Net 应用程序中使用 HTTPS

如何在 asp.net core mvc 中配置确认电子邮件令牌的生命周期

如何在 ASP.NET CORE 3.0 中配置路由以使用带有 [FromQuery] 参数的重载 [HttpGet] 方法?

定制ASP.NET 6.0的应用配置

ASP.NET 4.0尚未在Web服务器上注册。您需要手动将Web服务器配置为使用ASP.NET,这样您的网站才能正确运行。

您如何利用“Apache httpOnly cookie 披露”?