If it's helpful: ``` bool CookieCommons::CheckHttpValue(const CookieStruct& aCookieData) { // reject cookie if value contains an RFC 6265 disallowed character - see // https://bugzilla.mozilla.org/show_bug.cgi?id=1191423 // NOTE: this is not the full set of characters disallowed by 6265 - notably // 0x09, 0x20, 0x22, 0x2C, 0x5C, and 0x7F are missing from this list. This is // for parity with Chrome. This only applies to cookies set via the Set-Cookie // header, as document.cookie is defined to be UTF-8. Hooray for // symmetry!</sarcasm> const char illegalCharacters[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x3B, 0x00}; return aCookieData.value().FindCharInSet(illegalCharacters, 0) == -1; } ``` Is _mostly_ correct. It would need to have 0x7F added to it, as the comment is incorrect. It also incorrectly notes that Chromium allows 0x09 (htab), which is not true. That said, I think allowing 0x09 is correct (the RFC agrees), and Safari allows it as well. It would also need to apply to document.cookie, which it currently seems not to, something that does apply to both Chromium and Safari.
Bug 1797235 Comment 5 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
If it's helpful: ``` bool CookieCommons::CheckHttpValue(const CookieStruct& aCookieData) { // reject cookie if value contains an RFC 6265 disallowed character - see // https://bugzilla.mozilla.org/show_bug.cgi?id=1191423 // NOTE: this is not the full set of characters disallowed by 6265 - notably // 0x09, 0x20, 0x22, 0x2C, 0x5C, and 0x7F are missing from this list. This is // for parity with Chrome. This only applies to cookies set via the Set-Cookie // header, as document.cookie is defined to be UTF-8. Hooray for // symmetry!</sarcasm> const char illegalCharacters[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x3B, 0x00}; return aCookieData.value().FindCharInSet(illegalCharacters, 0) == -1; } ``` Is _mostly_ correct. It would need to have 0x7F added to it, as the comment is incorrect. It also incorrectly notes that Chromium allows 0x09 (htab), which is not true. That said, I think allowing 0x09 is correct (the RFC agrees), and Safari allows it as well. My testing also hasn't found anything that breaks with 0x09 -- which is not to say it isn't out there, but I haven't found it. The code above would also need to apply to document.cookie, which it currently seems not to. Both Chromium and Safari do apply these restrictions when set via `document.cookie`.