Files
ladybird/Base/res/html/misc/cookie.html
Daniel La Rocque 242d1d8eba LibWeb: Fail to parse cookie date when date does not exist
Previously, the cookie date validation did not validate days in the
context of the month and year, resulting in dates that do not exist to
be successfully parsed (e.g. February 31st). We now validate that the
day does not exceed the number of days for the given month and year,
taking leap years into account.
2024-01-07 08:01:58 -05:00

56 lines
3.2 KiB
HTML

<body>
<h3>Valid cookies:</h3>
<br /><input type=button onclick="setCookie(this.value)" value="cookie1=value1; max-age=5; path=/res/html" />
<br /><input type=button onclick="setCookie(this.value)" value="cookie2=value2; expires=Sat, 23 Jan 2060 08:10:36 GMT" />
<br /><input type=button onclick="setCookie(this.value)" value="cookie3=value3" />
<br /><input type=button onclick="setCookie(this.value)" value="cookie4=value4;SameSite=Lax" />
<br /><input type=button onclick="setCookie(this.value)" value="cookie5=value5;SameSite=Strict" />
<br /><input type=button onclick="setCookie(this.value)" value="cookie6=value6;SameSite=None" />
<br /><input type=button onclick="setPrettyLargeCookie()" value="cookie7=xxxxx..[2048 x's]" />
<br />
<h3>Invalid cookies (the browser should reject these):</h3>
<br /><input id=invalid1 type=button onclick="setCookie(this.value)" value="cookie4=value4; domain=serenityos.org" />
<label for=invalid1>The Domain attribute does not domain-match this page</label>
<br /><input id=invalid2 type=button onclick="setCookie(this.value)" value="cookie5=value5; httponly" />
<label for=invalid2>The cookie is HttpOnly thus cannot be set via JavaScript</label>
<br /><input id=invalid3 type=button onclick="setCookie(this.value)" value="cookie6=value6; max-age=-1" />
<label for=invalid3>The cookie expired in the past</label>
<br /><input id=invalid4 type=button onclick="setCookie(this.value)" value="cookie7=value7; expires=Mon, 23 Jan 1989 08:10:36 GMT" />
<label for=invalid4>The cookie expired in the past</label>
<br /><input id=invalid5 type=button onclick="setTooLargeCookie()" value="cookie10=[more than 4096 chars]" />
<label for=invalid5>The cookie is too large</label>
<br /><input id=invalid6 type=button onclick="setCookie(this.value)" value="cookie11=value11; domain=uk.gov" />
<label for=invalid6>The cookie's domain is on the Public Suffix List</label>
<br /><input id=invalid7 type=button onclick="setCookie(this.value)" value="cookie12=value12; expires=Sat, 31 Feb 2060 08:10:36 GMT" />
<label for=invalid4>The cookie has a date that does not exist</label>
<br />
<h3>Unretrievable cookies (the browser should accept these but not display them):</h3>
<br /><input id=locked1 type=button onclick="setCookie(this.value)" value="cookie8=value8; path=/not/this/path" />
<label for=locked1>The Path attribute does not path-match this page</label>
<br /><input id=locked2 type=button onclick="setCookie(this.value)" value="cookie9=value9; secure" />
<label for=locked2>The cookie is Secure thus cannot be viewed by a file:// page</label>
<br />
<pre>document.cookie = <span id=cookies></span></pre>
<script>
function setCookie(cookie) {
document.cookie = cookie;
document.getElementById('cookies').innerHTML = document.cookie;
}
function setPrettyLargeCookie() {
setCookie('cookie7=' + 'x'.repeat(2048));
}
function setTooLargeCookie() {
const cookie = 'name=' + 'x'.repeat(4 << 10);
setCookie(cookie);
}
document.getElementById('cookies').innerHTML = document.cookie;
</script>
</body>