How exactly do you configure httpOnlyCookies in ASP.NET?
Asked Answered
S

4

53

Inspired by this CodingHorror article, "Protecting Your Cookies: HttpOnly"

How do you set this property? Somewhere in the web config?

Simonize answered 28/8, 2008 at 22:14 Comment(0)
A
75

If you're using ASP.NET 2.0 or greater, you can turn it on in the Web.config file. In the <system.web> section, add the following line:

<httpCookies httpOnlyCookies="true"/>
Agateware answered 28/8, 2008 at 22:19 Comment(2)
This doesn't work for me. I tried "<httpCookies httpOnlyCookies="true" requireSSL="true"/>" and neither settings works.Baron
@rolls I have the same problem. Did you find a solution or cause?Mariettamariette
M
12

With props to Rick (second comment down in the blog post mentioned), here's the MSDN article on httpOnlyCookies.

Bottom line is that you just add the following section in your system.web section in your web.config:

<httpCookies domain="" httpOnlyCookies="true|false" requireSSL="true|false" />
Moussaka answered 28/8, 2008 at 22:17 Comment(3)
By the way - don't actually use domain="String" - either set a valid domain or leave that attribute out.Vertebral
@Moussaka what can cause this element to be locked? when i set it in my web.config file, i get the following error "the element httpcookies has been locked in a higher level configuration"Mucin
@Mucin - You might check your machine.config file on the server itself to see if that has a setting that has locked things.Moussaka
S
9

If you want to do it in code, use the System.Web.HttpCookie.HttpOnly property.

This is directly from the MSDN docs:

// 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);

Doing it in code allows you to selectively choose which cookies are HttpOnly and which are not.

Shockheaded answered 29/8, 2008 at 2:48 Comment(0)
E
3

Interestingly putting <httpCookies httpOnlyCookies="false"/> doesn't seem to disable httpOnlyCookies in ASP.NET 2.0. Check this article about SessionID and Login Problems With ASP .NET 2.0.

Looks like Microsoft took the decision to not allow you to disable it from the web.config. Check this post on forums.asp.net

Exum answered 21/4, 2009 at 1:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.