# Cookies Hacking {{#include ../../banners/hacktricks-training.md}} ## Cookie Attributes Cookies 具有几个属性,控制它们在用户浏览器中的行为。以下是这些属性的概述: ### Expires and Max-Age Cookie 的过期日期由 `Expires` 属性决定。相反,`Max-age` 属性定义了在删除 cookie 之前的秒数。**选择 `Max-age`,因为它反映了更现代的做法。** ### Domain 接收 cookie 的主机由 `Domain` 属性指定。默认情况下,这设置为发出 cookie 的主机,不包括其子域。然而,当 `Domain` 属性被显式设置时,它也包括子域。这使得 `Domain` 属性的指定成为一个不那么严格的选项,适用于需要跨子域共享 cookie 的场景。例如,设置 `Domain=mozilla.org` 使得在其子域如 `developer.mozilla.org` 上可以访问 cookie。 ### Path `Path` 属性指示必须在请求的 URL 中存在的特定 URL 路径,以便发送 `Cookie` 头。此属性将 `/` 字符视为目录分隔符,允许在子目录中匹配。 ### Ordering Rules 当两个 cookie 具有相同的名称时,选择发送的 cookie 基于: - 与请求的 URL 中最长路径匹配的 cookie。 - 如果路径相同,则选择最近设置的 cookie。 ### SameSite - `SameSite` 属性决定 cookie 是否在来自第三方域的请求中发送。它提供三种设置: - **Strict**:限制 cookie 在第三方请求中发送。 - **Lax**:允许 cookie 与由第三方网站发起的 GET 请求一起发送。 - **None**:允许 cookie 从任何第三方域发送。 请记住,在配置 cookie 时,理解这些属性可以帮助确保它们在不同场景中按预期行为。 | **Request Type** | **Example Code** | **Cookies Sent When** | | ---------------- | ---------------------------------- | --------------------- | | Link | \\ | NotSet\*, Lax, None | | Prerender | \ | NotSet\*, Lax, None | | Form GET | \