20070719

Firefox adds httpOnly attribute support!

Link

Thanks to Alex for discovering this for you. This is a feature that security people have been waiting for for a long, long time. Only I thought it was going to be much longer before it was available. I'll go over what httpOnly is, why it took so long, and what you should do about it.
Ordinarily, Javascript has access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cookies that a user sends to a particular website. So you can access those cookies on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 page itself from javascript via document.cookie. This is actually rarely necessary, but a handful of sites still use it, so it needs to stay available.
The problem with this is that if a site has a cross-site scripting vulnerability, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n an attacker can gacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cookies by cross-site scripting. For example, injecting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following script will send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cookies for a site (including session tokens) to evil.com:


document.write("");

Internet Explorer added support for a cookie attribute in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir cookies called httpOnly. By setting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 httpOnly flag on cookies, javascript is not allowed direct access to those cookies with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attribute set. This is also why all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TRACE XHR vulnerabilities in IE were such a big deal - TRACE will send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cookies, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response from TRACE is just text - so javascript has access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cookies, only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're not cookies in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're just text.
Firefox has been very slow in adding support for this. There was a large discussion about it, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reason cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were slow to add it is because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cookie store would have to be updated to store that information. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are so many third-party applications that use access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Firefox cookie store that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y couldn't update cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 format cleanly. Now, that didn't prevent you from being able to use it before - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attribute was just ignored in Firefox.
Now that it's finally available, use it. If you're constructing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Set-cookie headers by hand, you can just add ;httpOnly yourself. If you're not, .NET allows you to set cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attribute by configuration, and in some containers can add cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attribute to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 auto-generated session tokens cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves, or you can use a filter to add it. This will prevent direct access to session cookies in IE and newer versions of Firefox from accessing cookies directly by javascript, which is one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 more serious attacks available by cross-site scripting (clearly not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only one.)

2 comments:

  1. Anonymous15:39

    There's a reason why this enhancement has not widely publicized yet.

    Use this bookmarklet on Alex's test page:

    javascript:var%20x%20%3D%20new%20XMLHttpRequest%28%29%3Bx.open%28%22GET%22%2Cdocument.location%2Cfalse%29%3Bx.send%28null%29%3Balert%28x.getAllResponseHeaders%28%29%29%3Balert%28x.getResponseHeader%28%22Set-Cookie%22%29%29

    Readable:

    var x = new XMLHttpRequest();
    x.open("GET", document.location, false);
    x.send(null);
    alert(x.getAllResponseHeaders());
    alert(x.getResponseHeader("Set-Cookie"));


    This will be fixed soon, but it's been very wise from Moz devs not to boast too much or recommend too much early half-baked features.
    ________________________________________
    There's a browser safer than Firefox... Firefox, with NoScript

    ReplyDelete
  2. @ma1 - Indeed you're correct - I didn't even bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r to go and verify this. And it's not like Mozilla has been in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dark about it - it appears cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're adding httpOnly support in a phased approach.

    https://bugzilla.mozilla.org/show_bug.cgi?id=380418

    I think that just allowing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attribute and remembering it was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 major hurdle, however, because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cookie store format issues. Once W3C, WHATWG, et al make some decisions about how httpOnly should really behave with XHR, I think it won't be long before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y get a decent(ish) solution in place.

    ReplyDelete