我们如何在ASP.NET中精确配置httpOnlyCookies?

时间:2020-03-05 18:44:43  来源:igfitidea点击:

受此CodingHorror文章"保护Cookie:HttpOnly"的启发

我们如何设置此属性? Web配置中的某处?

解决方案

回答

借助Rick的道具(提到的博客文章中的第二条评论),这是有关httpOnlyCookies的MSDN文章。

最重要的是,我们只需在web.config的system.web部分中添加以下部分:

<httpCookies domain="" httpOnlyCookies="true|false" requireSSL="true|false" />

回答

如果我们使用的是ASP.NET 2.0或者更高版本,则可以在Web.config文件中将其打开。在<system.web>部分中,添加以下行:

<httpCookies httpOnlyCookies="true"/>

回答

如果要在代码中执行此操作,请使用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,哪些不是。

回答

有趣的是,在ASP.NET 2.0中,放置<< httpCookies httpOnlyCookies =" false" />似乎并没有禁用httpOnlyCookies`。查看有关ASP.NET 2.0的SessionID和登录问题的本文。

看来Microsoft已决定不允许我们从web.config禁用它。在forums.asp.net上查看此帖子