跨站请求是什么?

news2025/4/13 10:25:13

介绍

跨站请求(Cross-Site Request)通常是指浏览器在访问一个网站时,向另一个域名的网站发送请求的行为。这个概念在 Web 安全中非常重要,尤其是在涉及到“跨站请求伪造(CSRF)”和“跨域资源共享(CORS)”时。

✅ 原理:

  1. 用户登录了网站 A(比如网银),获得了身份 Cookie;

  2. 恶意网站 B 引导用户访问一个看不见的表单或图片链接;

  3. 浏览器默认会自动携带 Cookie 发起请求;

  4. 网站 A 接收到请求,并以为是用户主动发起的操作;

  5. 被攻击了!

<img src="https://bank.com/transfer?to=badguy&amount=1000" />

CORS 设置(针对跨域资源共享)

• 服务器通过 Access-Control-Allow-Origin 控制哪些域可以访问资源

• 默认禁止 JavaScript 跨域请求敏感信息

CSRF 防御:

• 使用 CSRF Token(后端生成一个隐藏字段或 header,必须携带)

• 使用 SameSite 属性限制 Cookie 跨站发送

• 检查 Referer 来源

• POST 请求验证身份

同源限制

A 网站不能直接访问 B 网站的 Cookie。

这是浏览器的**同源策略(Same-Origin Policy)**保护的。

✅ 什么是 Cookie 同源限制?

同源 = 协议 + 域名 + 端口 都相同

浏览器规定:

一个网站(origin)设置的 Cookie,只能被这个网站自己访问。

🔒 比如:

网站可访问的 Cookie 域
https://a.com只能访问属于 a.com 的 Cookie
https://b.com不能访问 a.com 的 Cookie

所以,即使你设置了“允许所有 Cookie”,浏览器还是会自动隔离不同网站之间的 Cookie

🍪 那些“Allow all cookies”是啥意思?

这些是用户给浏览器设置的权限,意思是:

• 是否允许 第三方 Cookie(Third-Party Cookies)

• 比如:你在 a.com 上访问,但页面里加载了 b.com 的 iframe / 图片 / script,这些操作是否可以让浏览器存取 b.com 的 Cookie。

<!-- 你在访问 a.com -->
<iframe src="https://b.com/login"></iframe>

如果浏览器允许第三方 Cookie,b.com 的页面可以设置 Cookie,这个 Cookie 是属于 b.com 的。

⚠️ 你在 a.com 的 JS 代码还是访问不到 b.com 的 Cookie!

强限制SameSite

🔒 SameSite 是啥?

SameSite 是浏览器用来限制 Cookie 在跨站请求中是否可以携带的一个 Cookie 属性。

是 Cookie 本身带的设置,告诉浏览器:“这个 Cookie 什么时候可以被发送?”

📋 SameSite 的三种取值:

含义跨站请求是否带 Cookie?场景
Strict严格模式❌完全禁止安全性最高,比如网银登录
Lax宽松模式✅允许 GET 导航(如点击链接)登录页面跳转
None无限制✅允许所有跨站请求,但需要加 Secure(HTTPS)跨站 API、第三方登录等

假设你在 a.com 登录后有个 Cookie:sessionid=abc123,设置了:

# Django/FastAPI 设置 Cookie 的时候加:
response.set_cookie(
    key="sessionid",
    value="abc123",
    samesite="strict",
    secure=True,
)

如果你后来从 b.com 发起一个请求到 a.com:

// 你在 b.com 上写了
fetch('https://a.com/api/userinfo', { credentials: 'include' })

🔒 浏览器不会携带 sessionid=abc123,因为你设置了 SameSite=Strict。

✅ 原因:

• 防止 CSRF 攻击(跨站请求伪造)

• 增加账户安全性

• 默认更“保守”,开发者自己决定放开(改为 Lax 或 None)

❗注意:

• 如果你的网站需要 跨站点请求+登录状态,比如前端 a.com、后端 api.a.com,就不能用 Strict,你要用:

SameSite=None; Secure

如果后端不使用 Cookie,而是使用 Authorization Header(比如 JWT)做身份验证,那 SameSite=Strict 对你来说根本不重要,完全没影响。

🔐 传统 Cookie 登录(状态保存在服务器):

• 登录成功后后端设置 cookie:

Set-Cookie: sessionid=abc123; SameSite=Strict

• 每次请求,浏览器自动带上 cookie:

Cookie: sessionid=abc123

这时候 SameSite=Strict 会阻止浏览器在跨站请求中携带这个 Cookie,比如别人恶意发起跨站 POST 请求,防止 CSRF

项目类型使用 Cookie 吗?是否需要关注 SameSite?
传统后端渲染(Django 模板)✅ 是✅ 需要,最好设为 Lax 或 Strict
前后端分离 + Cookie 登录✅ 是✅ 必须关注(建议 None + Secure)
前后端分离 + JWT 登录❌ 否❌ 不用管 SameSite,随它去

Https_only

https_only=True(也叫 secure=True)确实是为了强制浏览器只在 HTTPS 请求时发送 Cookie,而且它的确跟你的测试环境用 HTTP 有冲突。

在 Django / FastAPI / Flask 里,如果你设置:

response.set_cookie(
    key="sessionid",
    value="abc123",
    secure=True  # 或 https_only=True
)

它的作用是:

🚫 浏览器只会在

HTTPS 请求

❌ 如果是 HTTP 请求,浏览器会完全忽略这个 Cookie。

🔐 为什么要这么做?

• 防止中间人攻击(Man-in-the-middle attack)

• 保证 Cookie 不被 HTTP 劫持或监听

• 是现代 Web 安全的基本要求,特别是在登录、权限等敏感操作中非常重要

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2333752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode Solutions】LeetCode 160 ~ 165 题解

CONTENTS LeetCode 160. 相交链表&#xff08;简单&#xff09;LeetCode 162. 寻找峰值&#xff08;中等&#xff09;LeetCode 164. 最大间距&#xff08;中等&#xff09;LeetCode 165. 比较版本号&#xff08;中等&#xff09; LeetCode 160. 相交链表&#xff08;简单&#…

Openssl升级至openssl9.8p1含全部踩坑内容

1、安装依赖包基础条件 yum install gcc yum install gcc-c yum install perl yum install perl-IPC-Cmd yum install pam yum install pam-devel sudo yum install perl-Data-Dumper 问题一&#xff1a;提示yum不可用 镜像源问题更换阿里源即可 wget -O /etc/yum.repos.d/…

二战蓝桥杯所感

&#x1f334; 前言 今天是2025年4月12日&#xff0c;第十六届蓝桥杯结束&#xff0c;作为二战的老手&#xff0c;心中还是颇有不甘的。一方面&#xff0c;今年的题目比去年简单很多&#xff0c;另一方面我感觉并没有把能拿的分都拿到手&#xff0c;这是我觉得最遗憾的地方。不…

查看手机在线状态,保障设备安全运行

手机作为人们日常生活中不可或缺的工具&#xff0c;承载着沟通、工作、娱乐等多种功能。保障手机设备的安全运行是我们每个人都非常重要的任务&#xff0c;而了解手机的在线状态则是其中的一环。通过挖数据平台提供的在线查询工具&#xff0c;我们可以方便快捷地查询手机号的在…

#关于数据库中的时间存储

✅ 一、是否根据“机器当前时区”得到本地时间再转 UTC&#xff1f; 结论&#xff1a;是的&#xff0c;但仅对 TIMESTAMP 字段生效。 数据库&#xff08;如 MySQL&#xff09;在插入 TIMESTAMP 类型数据时&#xff1a; 使用当前会话的时区&#xff08;默认跟随系统时区&#…

第16届蓝桥杯省赛python B组个人题解

文章目录 前言ABCDEFGH 前言 仅个人回忆&#xff0c;不保证正确性 貌似都是典题&#xff0c;针对python的长代码模拟题也没有&#xff0c;一小时速通了&#xff0c;希望不要翻车。 更新&#xff1a;B、G翻车了。。 A 答案&#xff1a;103 B 应该是按长度排序&#xff0c;然后…

lvs+keepalived+dns高可用

1.配置dns相关服务 1.1修改ip地址主机名 dns-master: hostnamectl hostname lvs-master nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.107/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes nmcli c up ens160dns-salve: h…

Spark RDD相关概念

Spark运行架构与核心组件 1.Spark运行梁构 spark运行架构包括master和slave两个主要部分。master负责管理整个集群的作业任务调度&#xff0c;而slave则负责实际执行任务。 dirver是Spark驱动器节点&#xff0c;负责执行Spark任务中的main方法&#xff0c;将用户程序转换成作业…

SD + Contronet,扩散模型V1.5+约束条件后续优化:保存Canny边缘图,便于视觉理解——stable diffusion项目学习笔记

目录 前言 背景与需求 代码改进方案 运行过程&#xff1a; 1、Run​编辑 2、过程&#xff1a; 3、过程时间线&#xff1a; 4、最终效果展示&#xff1a; 总结与展望 前言 机器学习缺点之一&#xff1a;即不可解释性。最近&#xff0c;我在使用stable diffusion v1.5 Co…

【ROS2】行为树:BehaviorTree

1、简介 与状态机不同,行为树强调执行动作,而不是状态之间的转换。 行为树是可组合的。可以重复使用简单的行为来构建复杂的行为。 在游戏领域,行为树已经比较流行了。主要用于维护游戏角色的各种动作和状态。 ROS2的导航框架Navigation2中引入了行为树来组织机器人的工作流…

《JVM考古现场(十八):造化玉碟·用字节码重写因果律的九种方法》

"鸿蒙初判&#xff01;当前因果链突破十一维屏障——全体码农修士注意&#xff0c;《JVM考古现场&#xff08;十八&#xff09;》即将渡劫飞升&#xff01;" 目录 上卷阴阳交缠 第一章&#xff1a;混沌初开——JVM因果律的量子纠缠 第二章&#xff1a;诛仙剑阵改—…

使用nuxt3+tailwindcss4+@nuxt/content3在页面渲染 markdown 文档

nuxt3tailwindcss在页面渲染 markdown 文档 页面效果 依赖 “nuxt/content”: “^3.4.0” “tailwindcss”: “^4.0.10” “nuxt”: “^3.16.2” “tailwindcss/vite”: “^4.0.10” tailwindcss/typography (这个是格式化 md 样式用的) 注意&#xff1a; 这里nuxt/content…

Linux网络编程——详解网络层IP协议、网段划分、路由

目录 一、前言 二、IP协议的认识 1、什么是IP协议&#xff1f; 2、IP协议报头 三、网段划分 1、初步认识IP与路由 2、IP地址 I、DHCP动态主机配置协议 3、IP地址的划分 I、CIDR设计 II、子网数目的计算 III、子网掩码的确定 四、特殊的IP地址 五、IP地址的数量限…

【图像生成之21】融合了Transformer与Diffusion,Meta新作Transfusion实现图像与语言大一统

论文&#xff1a;Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Model 地址&#xff1a;https://arxiv.org/abs/2408.11039 类型&#xff1a;理解与生成 Transfusion模型‌是一种将Transformer和Diffusion模型融合的多模态模型&#xff0c;旨…

Microsoft Office 如何启用和正常播放 Flash 控件

对于新安装的 Office 默认是不支持启用 Flash 组件的&#xff0c;Flash 组件会无法播放或者黑屏。 本片文章就带你解决这个问题&#xff0c;相关资料都在下方连接内。前提概要&#xff0c;教程对应的版本是 mso16&#xff0c;即 Office 2016 及更新版本&#xff0c;以及 365 等…

定位改了IP属地没变怎么回事?一文解析

明明用虚拟定位软件将手机位置改到了“三亚”&#xff0c;为何某某应用评论区显示的IP属地还是“北京”&#xff1f;为什么切换了代理IP&#xff0c;平台却似乎“无视”这一变化&#xff1f; 在“IP属地显示”功能普及后&#xff0c;许多用户尝试通过技术手段隐藏真实位置&…

《深入理解生命周期与作用域:以C语言为例》

&#x1f680;个人主页&#xff1a;BabyZZの秘密日记 &#x1f4d6;收入专栏&#xff1a;C语言 &#x1f30d;文章目入 一、生命周期&#xff1a;变量的存在时间&#xff08;一&#xff09;生命周期的定义&#xff08;二&#xff09;C语言中的生命周期类型&#xff08;三&#…

一个插件,免费使用所有顶级大模型(Deepseek,Gpt,Grok,Gemini)

DeepSider是一款集成于浏览器侧边栏的AI对话工具&#xff0c;可免费使用所有顶级大模型 包括GPT-4o&#xff0c;Grok3,Claude 3.5 Sonnet,Claude 3.7,Gemini 2.0&#xff0c;Deepseek R1满血版等 以极简交互与超快的响应速度&#xff0c;完成AI搜索、实时问答、内容创作、翻译、…

智能车摄像头开源—9 动态权、模糊PID、速度决策、路径优化

目录 一、前言 二、动态权 1.概述 2.偏差值加动态权 三、模糊PID 四、速度决策 1.曲率计算 2.速度拟合 3.速度控制 五、路径 六、国赛视频 一、前言 在前中期通过识别直道、弯道等元素可进行加减速操作实现速度的控制&#xff0c;可进一步缩减一圈的运行速度&#xff…

《2025蓝桥杯C++B组:D:产值调整》

**作者的个人gitee**​​ 作者的算法讲解主页▶️ 每日一言&#xff1a;“泪眼问花花不语&#xff0c;乱红飞过秋千去&#x1f338;&#x1f338;” 题目 二.解题策略 本题比较简单&#xff0c;我的思路是写三个函数分别计算黄金白银铜一次新产值&#xff0c;通过k次循环即可获…