网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

什么是SameSite Cookies以及CSRF保护机制呢?

更新时间:2026年03月27日   作者:spoto   标签(Tag):

CSRF指的是跨站请求伪造。它允许攻击者通过电子邮件或其他方式发送被操纵的请求,从而在你以自己身份登录的网站上执行一些改变状态的操作。CSRF的目的并非是为了获取敏感数据,而是为了为攻击者的利益而修改或篡改你的数据。

CSRF的一个示例场景

例如,您已经登录到您的网上银行网站:https://mybank.com/。在您的网上银行应用程序中,用于进行资金转账的请求URL如下所示:

https://mybank.com/transferFunds.do?beneficiary=Siva&amount=500

攻击者试图将你的钱转帐到他的账户上。因此,他制作了一封包含以下HTML内容的电子邮件。

<img src='https://mybank.com/transferFunds.do?beneficiary=Attacker&amount=50000' height='0px’ width='0px’ alt='徽标无法显示’>

当你打开这封邮件时,你的浏览器会发起一个呼叫。此时,你已经在网上银行网站上登录了,因此你可以将资金转移到攻击者的账户中。这样一来,只要打开这封邮件,你的账户就会被扣款,因为你已经登录了银行网站。虽然图片看起来有些损坏,且文字显示不清楚,但攻击者还是成功地在你的银行网站上进行了所谓的“状态更改”操作,从而实现了自己的目的。

由于攻击者可以伪造并发送请求到您的浏览器上,因此攻击者无法获取与您的账户相关的任何数据。CSRF的主要目的就是执行写入操作。

传统的CSRF防护机制

由于CSRF是一种严重的漏洞,因此目前已经尝试了多种防护措施来应对这一问题。

  1. 使用 POST 方法而非 GET 方法:有一种误解,认为只有 GET 方法容易受到 CSRF 攻击。实际上,可以通过发送由 JavaScript 控制的 HTML 表单链接来向用户发送请求。当用户打开该链接时,该链接会利用 JavaScript 自动将请求发送到目标网站。因此,这种处理方式并不能有效防止 CSRF 攻击。
  2. 反CSRF令牌:对于每个由网站生成的链接,该网站还会在请求参数或请求头中附加一个Anti-CSRF令牌。 这应该是一个非常难以被攻击者预测或篡改的加密哈希值。 该网站还在其响应Cookie中存储了此哈希值。 只有当包含 CSRF 令牌的参数与 CSRF Cookie 匹配时,请求才能被允许继续进行。 否则,该请求将会失败。 这种CSRF Cookie可能每次会话或每次请求时都会生成一次,因此必须立即将其失效。 那个向你发送请求并制造该请求的攻击者,根本不知道当前会话/请求所使用的CSRF Cookie到底是什么。 因此,所有涉及CSRF cookie保护的状态变更操作,都能有效阻止CSRF攻击的尝试。

SameSite属性

对于与任何网站相关联的每一个Cookie,都可以设置一个名为“SameSite”的属性。 这是为了防止网站受到CSRF攻击而引入的防护措施。 如果不使用单独的Cookie来防止CSRF攻击,那么“SameSite”属性可以被设置为网站的会话Cookie。这个属性可以指示:允许用户访问该网站的Cookie是否应该只从同一网站或第三方网站发送的链接中传递过来。这个属性用于控制Cookie的传递方式。

通过SameSite Cookie解决CSRF问题

由于这是所有网站都面临的一个常见问题,因此每个网站都必须具备生成、传递和失效 CSRF 令牌的机制。Chrome 现在引入了 “SameSite cookie” 机制,该机制本质上就是为了实现 CSRF 防护而设计的。

几乎所有的网站都使用基于Cookie的用户认证机制。当用户使用自己的凭据登录到某个网站时,该网站会在用户的浏览器中设置一个Cookie。这样,当用户再次访问该网站时,就可以直接使用该Cookie,而无需重新登录。这种Cookie被称为会话Cookie。通过在会话Cookie的SameSite属性中使用以下值之一,网站可以保护自己免受CSRF攻击的威胁。

所有设置在某个域名上的Cookie,都可以拥有一个名为“SameSite”的Cookie属性值。这个“SameSite”Cookie可以具有以下几种取值:

SameSite : strict

当“SameSite”设置为“strict”时,所有发送给第三方网站的Cookie都会被禁用。只有当目标域与设置Cookie时所使用的路径相同时,才会发送Cookie。

SameSite : none

当“SameSite”设置为“none”时,基于“SameSite”的保护功能将被禁用。此时,网站可以使用其自己的CSRF保护机制来防止攻击。

SameSite : Lax

当“SameSite”属性被设置为“Lax”时,系统只允许将Cookie用于顶级导航功能。如果您没有添加“SameSite”属性,那么Lax就会被视为默认行为。

因此,如果为会话Cookie设置了SameSite:Strict的选项,那么即使没有专门的CSRF Cookie,从第三方网站链接到您网站的链接中也不会包含会话Cookie。这样一来,就无法对这些链接发起CSRF攻击了。

这种情况越来越常见了,因为所有现代浏览器都考虑采用这种机制来保护用户免受CSRF攻击的侵害。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料