您的位置:首页 > 科技 > IT业 > 最新新闻热点事件政治_营销推广费用包括哪些_最近热搜新闻事件_百度搜索网站

最新新闻热点事件政治_营销推广费用包括哪些_最近热搜新闻事件_百度搜索网站

2025/4/15 16:22:34 来源:https://blog.csdn.net/QAZJOU/article/details/147171667  浏览:    关键词:最新新闻热点事件政治_营销推广费用包括哪些_最近热搜新闻事件_百度搜索网站
最新新闻热点事件政治_营销推广费用包括哪些_最近热搜新闻事件_百度搜索网站

介绍

跨站请求(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 安全的基本要求,特别是在登录、权限等敏感操作中非常重要

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com