# Cookies Hacking {{#include ../../banners/hacktricks-training.md}} ## Cookie Attributes Cookies come with several attributes that control their behavior in the user's browser. Here’s a rundown of these attributes in a more passive voice: ### Expires and Max-Age The expiry date of a cookie is determined by the `Expires` attribute. Conversely, the `Max-age` attribute defines the time in seconds until a cookie is deleted. **Opt for `Max-age` as it reflects more modern practices.** ### Domain The hosts to receive a cookie are specified by the `Domain` attribute. By default, this is set to the host that issued the cookie, not including its subdomains. However, when the `Domain` attribute is explicitly set, it encompasses subdomains as well. This makes the specification of the `Domain` attribute a less restrictive option, useful for scenarios where cookie sharing across subdomains is necessary. For instance, setting `Domain=mozilla.org` makes cookies accessible on its subdomains like `developer.mozilla.org`. ### Path A specific URL path that must be present in the requested URL for the `Cookie` header to be sent is indicated by the `Path` attribute. This attribute considers the `/` character as a directory separator, allowing for matches in subdirectories as well. ### Ordering Rules When two cookies bear the same name, the one chosen for sending is based on: - The cookie matching the longest path in the requested URL. - The most recently set cookie if the paths are identical. ### SameSite - The `SameSite` attribute dictates whether cookies are sent on requests originating from third-party domains. It offers three settings: - **Strict**: Restricts the cookie from being sent on third-party requests. - **Lax**: Allows the cookie to be sent with GET requests initiated by third-party websites. - **None**: Permits the cookie to be sent from any third-party domain. Remember, while configuring cookies, understanding these attributes can help ensure they behave as expected across different scenarios. | **Request Type** | **Example Code** | **Cookies Sent When** | | ---------------- | ---------------------------------- | --------------------- | | Link | \\ | NotSet\*, Lax, None | | Prerender | \ | NotSet\*, Lax, None | | Form GET | \