跨站请求是什么?

介绍

跨站请求(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.mzph.cn/pingmian/76542.shtml

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

相关文章

Web攻防—SSRF服务端请求伪造Gopher伪协议无回显利用

前言 重学Top10的第二篇&#xff0c;希望各位大佬不要见笑。 SSRF原理 SSRF又叫服务端请求伪造&#xff0c;是一种由服务端发起的恶意请求&#xff0c;SSRF发生在应用程序允许攻击者诱使服务器向任意域或资源发送未经授权的请求时。服务器充当代理&#xff0c;执行攻击者构造…

Hibernate:让对象与数据库无缝对话的全自动ORM框架

一、为什么需要全自动ORM&#xff1f; 在手动编写SQL的时代&#xff0c;开发者需要在Java代码和数据库表之间来回切换&#xff1a; // Java对象 public class User {private Long id;private String name;// getters and setters }// SQL语句 SELECT * FROM user WHERE id ?…

C语言超详细指针知识(一)

通过前面一段时间C语言的学习&#xff0c;我们了解了数组&#xff0c;函数&#xff0c;操作符等的相关知识&#xff0c;今天我们将要开始进行指针的学习&#xff0c;这是C语言中较难掌握的一个部分&#xff0c;一定要认真学习&#xff01;&#xff01;&#xff01; 1.内存与地址…

程序化广告行业(70/89):ABTester系统助力落地页优化实践

程序化广告行业&#xff08;70/89&#xff09;&#xff1a;ABTester系统助力落地页优化实践 在程序化广告领域摸爬滚打多年&#xff0c;深知持续学习和知识共享的重要性。写这篇博客&#xff0c;就是希望能和大家一起深入探索程序化广告行业&#xff0c;共同学习、共同进步。今…

项目管理(高软56)

系列文章目录 项目管理 文章目录 系列文章目录前言一、进度管理二、配置管理三、质量四、风险管理五、真题总结 前言 本节主要讲项目管理知识&#xff0c;这些知识听的有点意思啊。对于技术人想创业&#xff0c;单干的都很有必要听听。 一、进度管理 二、配置管理 三、质量 四…

常见的后缀名

.exe .exe&#xff08;“executable”&#xff08;可执行的&#xff09;&#xff09;是 Windows 操作系统中最常见的可执行文件扩展名。此类文件包含了计算机能够直接运行的机器码指令。当用户双击 .exe 文件时&#xff0c;操作系统会读取其中的指令并执行相应的程序或任务。…

XILINX DDR3专题---(1)IP核时钟框架介绍

1.什么是Reference Clock&#xff0c;这个时钟一定是200MHz吗&#xff1f; 2.为什么APP_DATA是128bit&#xff0c;怎么算出来的&#xff1f; 3.APP &#xff1a;MEM的比值一定是1:4吗&#xff1f; 4.NO BUFFER是什么意思&#xff1f; 5.什么情况下Reference Clock的时钟源可…

Doris 安装部署、实际应用及优化实践:对比 ClickHouse 的深度解析

在实时分析、报表系统以及高并发 OLAP 查询等场景中&#xff0c;列式存储数据库因其卓越的查询性能逐渐成为主流。Doris 和 ClickHouse 是近年来最受欢迎的两款开源 OLAP 引擎&#xff0c;本文将系统介绍 Doris 的安装部署、应用场景及优化实践&#xff0c;并与 ClickHouse 做一…

OracleLinuxR5U5系统重启后启动数据库oracle23ai

1、切换到oracle用户 [rootOracleLinux-R9-U5 ~]# su oracle2、查看oracle是否配置了ORACLE_SID [oracleOracleLinux-R9-U5 root]$ cd ~ [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile3、输出内容如下&#xff1a; [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile # .ba…

【正点原子】STM32MP257 同构多核架构下的 ADC 电压采集与处理应用开发实战

在嵌入式系统中&#xff0c;ADC模拟电压的读取是常见的需求。如何高效、并发、且可控地完成数据采集与处理&#xff1f;本篇文章通过双线程分别绑定在 Linux 系统的不同 CPU 核心上&#xff0c;采集 /sys/bus/iio 接口的 ADC 原始值与缩放系数 scale&#xff0c;并在另一个核上…

电商用户购物行为分析:基于K-Means聚类与分类验证的完整流程

随着电商行业的快速发展,用户行为分析成为企业优化营销策略、提升用户体验的重要手段。通过分析用户的购物行为数据,企业可以挖掘出用户群体的消费特征和行为模式,从而制定更加精准的营销策略。本文将详细介绍一个基于Python实现的电商用户购物行为分析系统,涵盖数据预处理…

AMGCL库的Backends及使用示例

AMGCL库的Backends及使用示例 AMGCL是一个用于解决大型稀疏线性方程组的C库&#xff0c;它提供了多种后端(backends)实现&#xff0c;允许用户根据不同的硬件和性能需求选择合适的计算后端。 AMGCL支持的主要Backends 内置Backends: builtin - 默认的纯C实现block - 支持块状…

Express中间件(Middleware)详解:从零开始掌握(3)

实用中间件模式25例 1. 基础增强模式 请求属性扩展 function extendRequest() {return (req, res, next) > {req.getClientLanguage () > {return req.headers[accept-language]?.split(,)[0] || en;};next();}; } 响应时间头 function responseTime() {return (r…

05--MQTT物联网协议

一、MQTT的概念 MQTT 协议快速入门 2025&#xff1a;基础知识和实用教程 | EMQ 1.MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级、基于发布-订阅模式的消息传输协议&#xff0c;适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它…

数据结构与算法——链表OJ题详解(2)

文章目录 一、前言二、OJ续享2.1相交链表2.2环形链表12.2环形链表2 三、总结 一、前言 哦了兄弟们&#xff0c;咱们上次在详解链表OJ题的时候&#xff0c;有一部分OJ题呢up并没有整理完&#xff0c;这一个星期呢&#xff0c;up也是在不断的学习并且沉淀着&#xff0c;也是终于…

SQL Server AlwaysOn (SQL 查询数据详解及监控用途)

修正后的完整查询 SELECT ar.replica_server_name AS [副本名称],ar.availability_mode_desc AS [同步模式],DB_NAME(dbr.database_id) AS [数据库名称],dbr.database_state_desc AS [数据库状态],dbr.synchronization_state_desc AS [同步状态],dbr.synchronization_health_d…

力扣热题100刷题day63|49.字母异位词分组

目录 一、哈希表相关理论 二、思路 核心思路 三、相关题目 四、总结 一、哈希表相关理论 代码随想录刷题day15|&#xff08;哈希表篇&#xff09;242.有效的字母异位词、383.赎金信-CSDN博客 二、思路 首先&#xff0c;创建一个map集合&#xff0c;遍历字符串数组&…

爱普生可编程晶振SG8201CJ和SG8200CJ在胃镜机器人发挥重要作用

在医疗机器人技术高速发展的今天&#xff0c;胃镜机器人作为胃肠道疾病诊断与治疗的创新设备&#xff0c;正逐渐改变传统诊疗模式。其复杂精密的系统需要精准的时间同步与稳定的信号输出&#xff0c;胃镜机器人是一种先进的医疗设备&#xff0c;用于无创性地检查胃部疾病。与传…

Ubuntu22环境下,Docker部署阿里FunASR的gpu版本

番外: 随着deepseek的爆火,人工智能相关的开发变得异常火爆,相关的大模型开发很常见的agent智能体需要ASR语音识别的功能,阿里开源的FunASR几乎是把一个商业的项目放给我们使用了。那么我们项目中的生产环境怎么部署gpu版本的语音识别服务呢?经过跟deepseek的一上午的极限…

图解Java设计模式

1、设计模式面试题 2、设计模式的重要性 3、7大设计原则介绍 3.1、单一职责原则