什么是 CSRF?

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种利用 浏览器自动携带 Cookie 的机制,诱骗用户在已登录目标网站的情况下,执行恶意操作的攻击方式。

攻击核心特点:

  • 攻击者 不需要窃取 Cookie,而是利用浏览器自动发送 Cookie 的机制。
  • 服务器无法区分 用户主动提交的请求和 恶意网站伪造的请求。

CSRF 攻击流程

示例场景(银行转账)

  1. 用户登录银行网站
    访问your-bank.com,服务器设置Cookie并返回:

    Set-Cookie: session_id=abc123; Secure; HttpOnly
    

    浏览器存储该 Cookie,后续访问 your-bank.com 时自动携带。

  2. 用户访问恶意网站
    恶意网站malicious.com隐藏了一个自动提交的表单:

       <form action="https://your-bank.com/transfer" method="POST"><input type="hidden" name="amount" value="10000"><input type="hidden" name="to_account" value="hacker"></form><script>document.forms[0].submit(); // 自动提交</script>
    
  3. 浏览器发送伪造请求
    由于目标地址是your-bank.com,浏览器自动附加 Cookie

    POST /transfer HTTP/1.1
    Host: your-bank.com
    Cookie: session_id=abc123
    amount=10000&to_account=hacker
    

    服务器看到合法 session_id,执行转账,攻击成功!

CSRF 防御措施

(1)CSRF Token(最常用)

原理:服务器生成随机 Token,嵌入表单,提交时验证。
实现步骤:

  1. 服务器在渲染表单时生成 Token,存储(Session/Redis):
       <form action="/transfer" method="POST"><input type="hidden" name="csrf_token" value="RANDOM_STRING"></form>
    
  2. 提交请求时,服务器验证 Token 是否匹配:
       if request.cookies["session_id"] != user_session or request.form["csrf_token"] != stored_token:return "Invalid request!"
    
  3. 恶意网站无法获取 Token,伪造请求会被拒绝。

(2)SameSite Cookie(浏览器级防御)

通过设置 SameSite 属性,限制跨站请求携带 Cookie。
SameSite属性有三个值:

  • Strict模式‌(最严格、但可能影响用户体验)
    仅在请求来源与当前域名完全一致时发送Cookie,所有跨站请求均不携带。‌安全性最高,但可能影响用户体验(如从外部链接跳转时需重新登录)。‌‌
  • ‌Lax模式(推荐、默认值)
    允许在‌GET请求的顶级导航‌(如点击链接跳转)中发送Cookie,但禁止跨站的POST请求或其他非安全方法携带Cookie。‌‌平衡安全性与用户体验,成为主流浏览器的默认配置。‌‌
    Set-Cookie: session_id=abc123; Secure; HttpOnly; SameSite=Lax
    
  • None模式
    允许所有跨站点请求携带Cookie,但必须同时设置Secure属性(仅通过HTTPS传输)。‌‌

(3)检查 Referer/Origin 头

服务器检查 Referer(表示当前请求是从哪个 URL 页面发起的) 或 Origin (当前请求的 发起源,仅含协议 + 域名 + 端口,不含路径),判断请求来源是否合法。
缺点:Referer 可能被篡改或缺失,不适合作为唯一防护。

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

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

相关文章

学习记录2025

1、Cmake相关 cmake -S . -B build -S . 表示CMakeLists.txt在哪个目录 -B build CMake生成结果在哪个路径 build就是路径名 简短 cmake -B build 或进入build 文件夹下 cmake cmake --build build 在build文件夹下编译 常量&#xff1a;CMAKE_CURRENT_LIST_DIR CMAKE…

GIT操作 学习

登录gitee登录方式&#xff1a;通过网站登录&#xff0c;使用注册时的账号&#xff08;通常是手机号&#xff09;和密码进行认证创建仓库 &#xfeff;新建仓库步骤命名规范&#xff1a;仓库名称应尽量符合规范&#xff0c;避免与已有仓库冲突&#xff0c;建议使用有意义的命名…

[论文精读]StruQ: Defending Against Prompt Injection with Structured Queries

StruQ: Defending Against Prompt Injection with Structured Queries [2402.06363] StruQ: Defending Against Prompt Injection with Structured Queries usenix security 2025 提示注入攻击是一个重要的威胁&#xff1a;它们诱使模型偏离原始应用程序的指令&#xff0c;转…

磁悬浮轴承的反馈线性化:非线性控制的智能解耦之道

摘要:磁悬浮轴承凭借无摩擦、高速度、长寿命等优势,成为高速旋转机械的理想支撑方案。然而,其本质非线性与强耦合特性使得传统线性控制方法难以满足高性能要求。本文深入解析反馈线性化技术如何精确解除磁悬浮系统的非线性耦合,揭示其从微分几何理论到工程实现的核心路径,…

探寻《答案之书》:在随机中寻找生活的指引

我强烈推荐4本可以改变命运的经典著作&#xff1a; 《寿康宝鉴》在线阅读白话文《欲海回狂》在线阅读白话文《阴律无情》在线阅读白话文《了凡四训》在线阅读白话文 在快节奏的现代生活中&#xff0c;人们常常面临各种困惑与抉择。当常规的思考与决策方式无法带来清晰答案时&am…

【PTA数据结构 | C语言版】计算1~n平方的和加上1~n的和

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录 题目代码 题目 给定正整数 n&#xff0c;请编写程序&#xff0c;求 (12⋯n^2 )(12⋯n) 的值。 输入格式&#xff1a; 输入在一行中给出正整数 n&#xff08;≤100&#xff09;。 输出格式&#xff1a; 在一行中…

Assistant API的原理及应用

&#x1f9e0; 什么是 Assistants API&#xff1f; &#x1f4c5; **发布日期&#xff1a;**2023年11月6日&#xff0c;OpenAI在开发者大会上发布了 Assistants API —— 一款面向开发者的工具&#xff0c;用于在应用中构建 AI 助手。 ✅ 它可以做什么&#xff1f; Assistants …

《北京市加快推动“人工智能+医药健康“创新发展行动计划(2025-2027年)》深度解读

引言 随着新一轮科技革命和产业变革的深入推进,人工智能技术与医药健康的深度融合已成为全球科技创新的重要方向。北京市于2025年7月正式发布《北京市加快推动"人工智能+医药健康"创新发展行动计划(2025-2027年)》,旨在充分发挥北京在人工智能技术策源、头部医疗…

DPDK 关于 IOMMU 设置

一、IOMMU 基础概念 定义:IOMMU(Input/Output Memory Management Unit)即输入 / 输出内存管理单元,它是一种硬件机制,用于将设备发出的内存访问请求进行地址转换。在现代计算机系统中,它在设备与内存之间起到桥梁作用,提供内存保护和设备隔离功能。作用: 内存保护:防止…

pg_class 系统表信息

SELECT c.relname, c.relkind, CASE WHEN c.relkind r THEN 普通表 WHEN c.relkind p THEN 分区表 WHEN c.relkind f THEN 外表 WHEN c.relkind v THEN 视图 WHEN c.relkind m THEN 物化视图 ELSE 其他 END as table_type_desc FROM pg_class c JOIN pg_namespace …

【C++开源库使用】使用libcurl开源库发送url请求(http请求)去下载用户头像文件(附完整源码)

目录 1、libcurl介绍 2、libcurl库源码下载与编译 3、调用libcurl库的API接口实现http/https请求发送&#xff0c;实现头像文件下载 4、发送图片url下载图片文件的完整代码展示 5、使用libcurl发送https请求时可能会遇到的两个错误 在某SDK项目中&#xff0c;第三方…

在Docker容器中更改,保存为新的镜像

# 1. 进入原始容器 docker run -it --name mydev ubuntu:20.04 /bin/bash# 2. 在容器内做大量修改 apt update && apt install -y python3 mkdir /app && echo print("Hello from modified container") > /app/app.py# 3. 退出容器 exit# 4. 保存…

【网络与爬虫 13】智能伪装:Scrapy-Fake-UserAgent反检测技术实战指南

【网络与爬虫 13】智能伪装&#xff1a;Scrapy-Fake-UserAgent反检测技术实战指南 关键词&#xff1a;Scrapy-Fake-UserAgent、反爬虫、智能伪装、浏览器指纹、用户代理、爬虫检测规避、自动更新UA 摘要&#xff1a;本文深入解析Scrapy-Fake-UserAgent库的工作原理与应用技巧&a…

前端开发常见问题

前端开发常见问题技术文章大纲 引言 简要介绍前端开发在当前技术环境中的重要性&#xff0c;以及开发者常遇到的挑战和痛点。 浏览器兼容性问题 不同浏览器对CSS、JavaScript的支持差异常见的Polyfill和转译工具&#xff08;如Babel、PostCSS&#xff09;如何利用Can I Use…

文心开源大模型ERNIE-4.5-0.3B-Paddle私有化部署保姆级教程及技术架构探索

一起来轻松玩转文心大模型吧&#x1f449;一文心大模型免费下载地址: https://ai.gitcode.com/theme/1939325484087291906 前言 2025年6月30日&#xff0c;百度正式开源文心大模型4.5系列&#xff08;ERNIE 4.5&#xff09;&#xff0c;涵盖10款不同参数规模的模型&#xff0…

【操作系统】内存管理

要求&#xff1a; 1、在该实验中&#xff0c;采用可变分区方式完成对存储空间的管理&#xff08;即存储空间的分配与回收工作&#xff09;。 2、设计用来记录主存使用情况的数据结构&#xff1a;已分区表和空闲分区表。 3、在设计好的数据结构上设计一个主存分配算法&#xff0…

【算法笔记】5.LeetCode-Hot100-矩阵专项

1. 矩阵置零(t73) 中等难度&#xff0c;题目示例如下&#xff1a; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用原地算法。示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&…

ORACLE 日常查询

一. 查询索引相关1. 查询索引所在的表空间&#xff0c;单个索引的大小SELECT ui.table_name, us.segment_name AS index_name, us.tablespace_name,ROUND(SUM(us.bytes) / 1024 / 1024 / 1024, 2) AS total_size_GB FROM dba_indexes ui JOIN dba_segments us ON ui.index_name…

【DeepSeek实战】17、MCP地图服务集成全景指南:高德、百度、腾讯三大平台接入实战

引言:为什么MCP是地图服务的下一代革命? 在数字化时代,位置服务已成为电商、出行、物流等行业的核心基础设施。但单一地图服务商的局限性日益凸显:某外卖平台因高德地图API突发故障导致30分钟订单配送延迟,某打车软件因百度地图路线规划偏差引发用户投诉激增,某物流企业…

设计模式之【动态代理】

目录 动态代理中存在的概念 JDK动态代理 代理工厂【ProxyFactory】实现【InvocationHandler】 目标类的接口【TargetInterface】 目标类【Target】实现了接口 测试类【JDKDynamicProxyTest】 CGLIB动态代理 添加Maven依赖 代理工厂【ProxyFactory】实现【MethodInterc…