什么是CSRF攻击?应如何防御?

CSRF攻击中双重提交Cookie的报错与修复 摘要: CSRF攻击防御中,双重提交Cookie方案通过客户端与服务器端Token双重验证保障安全。本文解析了Token不匹配、缺失、过期等常见报错原因,并提供了Node.js完整实现代码与前端集成方案。关键点包括:安全Cookie配置(HttpOnly、SameSite)、HTTPS加密传输、严格Token比较验证,以及Token轮换策略。通过技术矩阵对比和实战代码示例,展示了如何构建多层级CSRF防御体系,有效防范跨站请求伪造攻击。(149字) 阅读详情

一、什么是CSRF攻击?
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
二、CSRF攻击原理是什么?
在这里插入图片描述
依据上图的原理简单点说就是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
举一个例子:
假如一家银行用以运行转账操作的URL地址如下:
http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
那么,一个恶意攻击者可以在另一个网站上放置如下代码:

<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">

此时如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。
这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛,博客等任何用户生成内容的网站中。这意味着如果服务端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。
透过例子能够看出,攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义运行操作。
三、如何防御CSRF的攻击?
1、验证HTTP Referer字段
HTTP头中的Referer字段记录了该 HTTP 请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,而如果黑客要对其实施 CSRF 攻击,他一般只能在他自己的网站构造请求。因此,可以通过验证Referer值来防御CSRF 攻击。但是这种办法简单易行,工作量低,仅需要在关键访问处增加一步校验。但这种办法也有其局限性,因其完全依赖浏览器发送正确的Referer字段。虽然http协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,亦无法保证浏览器没有安全漏洞影响到此字段。并且也存在攻击者攻击某些浏览器,篡改其Referer字段的可能。
2、验证码
利用验证码将用户收到的信息与后台服务器进行比对,每次用户提交都需要用户在表单中填写一个图片上的随机字符串,不符则进行拒绝。
3、添加token验证
由于CSRF的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在cookie中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再运行CSRF攻击。这种数据通常是窗体中的一个数据项。服务器将其生成并附加在窗体中,其内容是一个伪随机数。当客户端通过窗体提交请求时,这个伪随机数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪随机数,而通过CSRF传来的欺骗性攻击中,攻击者无从事先得知这个伪随机数的值,服务端就会因为校验token的值为空或者错误,拒绝这个可疑请求。
4、尽量使用POST,限制GET
GET接口能够直接将请求地址暴露给攻击者,所以要防止CSRF一定最好不要用GET。当然POST并不是万无一失,攻击者只需要构造一个form表单就可以,但需要在第三方页面做,这样就增加了暴露的可能性。

基于STM32-XPC仿真平台的构架 基于STM32-XPC仿真平台的构架 xPC Target是MathWorks公司的MATLAB提供的一个基于RTW(Real-Time Workshop)体系框架的附加产品,是一种用于产品原型开发、测试和配置实时系统的PC机解决途径。xPC目标实时仿真系统能够使开发者在产品开发前进行产品原型的快速实现、测试和评估,是 Simulink 工具集下用于产品原型开发设计测试集于一体的工具箱。 阅读详情

相关推荐

告别兼容性困扰:在F-Droid中安全部署Termux的完整指南

本文提供了一份在F-Droid中安全部署Termux的完整指南,旨在彻底解决Android设备上的兼容性困扰。文章详细阐述了为何选择F-Droid而非Google Play商店,并逐步指导用户完成从彻底清理旧版本、安装F-Droid客户端、授予权限到最终安装配置Termux的全过程。指南还涵盖了进阶的稳定性配置、数据迁移方法以及常见问题排查,确保用户获得一个稳定、无冲突的命令行工作环境。

weixin_29224309的博客 946

CSRF攻击与防御(写得非常好)

转载地址:http://www.phpddt.com/reprint/csrf.html CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解: 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,

认知 行动 坚持 25万+

基于单片机控制的开关电源设计

采用开关电源技术和MCU模块,凭借可靠性高、易于调适的特点,可以更高效地发挥出二者的优势,从而实现更好的组合。stm32的起动模式是通过Boot0和Boot1两个管脚的高低电平来决定的,当stm32被供电之后,这两个管脚的电平。在 VCC上,键盘的一头(列线)被连接到 VCC上,而在“0”的编程输出中,则用来进。,在开关管打开的情况下,由输入电力供给电流,感应装置存储   Buck变换器是一种非隔离式的电压转换器[10]整流电路对输入电压进行整流,再经过滤波电路,即Dc电压是直流/直流变换器的直流输入。

QQ1694456187的博客 2309

CSRF漏洞原理攻击与防御(非常细)

CSRF (Cross-site request forgery,跨站请求伪造)也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。简单的说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己以前认证过的站点并运行一些操作(如发邮件,发消息,甚至财产操作(如转账和购买商品))。

2201_75735270的博客 1071

QMT量化交易实战:如何用通达信预警数据自动买卖股票(附完整Python代码)

本文详细介绍了如何利用QMT平台对接通达信预警数据,构建自动化股票交易系统。通过完整的Python代码示例,展示了从数据获取到订单执行的全流程,帮助投资者实现量化交易策略的自动化执行,提升交易效率。

weixin_29234423的博客 210

高项49个过程,输入、工具技术、输出的思维导图

为了制定项目章程的管理方法主要是采用了数据收集技术,例如通过头脑风暴,通过召集主题专家和团队成员收集信息、解决方案,并在短时间内获得大量创意,并对大量创意进行分析和排序,选出最优化最适合本项目方案,并对项目成员的不同差异观点,进行了引导和对冲突的管理,最终有助于项目干系人的目标、成功标准的内容达成一致意见,形成完善的项目章程。在本过程中得到项目章程,在制定项目章程中需要包括信息有:项目名称、项目目标、项目总里程碑进度表、项目经理、主要干系人及财务预算信息。本过程在仅开展一次,或仅在项目的预定义点开展。

Legend_Jiang的博客 6182

CSRF漏洞防御

1.验证码防御 验证码防御被认为是对抗CSRF最为简单而且有效的防御方法。 CSRF在用户不知情的情况下完成对应操作,而验证码强制用户与应用程序交互,才能最终完成操作。通常情况下,验证码能够很好的遏制CSRF。 出于用户体验考虑,不可能每一个操作都加入验证码。所以验证码只作为辅助手段,不能作为防御CSRF的主要解决方案。 验证码防御也可以被认为是二次验证 2.Referer Check防御 Referer Check主要用于防止盗链。同理也可以用来检查请求是否来自合法的“源”。 比如用户修改密码,一定是在

一米八多的瑞兹的博客 3603

Node-RED系列(二九):使用slider与chart节点来实现双折线时间序列图

今天教使用dashboard的chart组件和slider组件来是实现一个双线的折线图。效果如下 拖动顶部的电量和水量,低下的图表会实时显示时间和值之所以做这个模拟案例,是将教 大家使用chart节点和slider节点先说一下slider节点,该节点是一个滑块节点,可以接受上一节点的 msg.payload,作为滑块的值, slider必须设置最大值和最小值。且不能动态设置。 此外当用户拖动slider滑块,改变值时,该节点会向下传递当前值 以属性payload装载。在说一下chart节点,该节点可以用于

知无涯 4968

activemq错误UnsupportedOperationException: Possible CSRF attack 求大牛指导

activemq 运行一段时间后报错,不能正常工作。哪位大牛可以分析一下原因? 2019-05-21 05:13:34,741 | WARN | | org.eclipse.jetty.servlet.ServletHandler | qtp833400684-30184 org.springframework.web.util.NestedServletException: Request...

qdulgh的专栏 3430

手把手教你玩转CPU微架构--​第三章:乱序执行的“魔法”——如何让指令“插队”提升效率​​3.4 动手实验:用Gem5模拟器分析乱序执行对IPC的提升(对比顺序执行)

摘要:本章通过Gem5模拟器对比乱序执行(O3CPU)和顺序执行的性能差异,实验采用SPECCPU2017和PARSEC3.0基准测试,配置7级流水线、4指令/周期发射宽度及多级缓存。结果显示,乱序执行平均提升IPC超过100%,关键因素包括动态指令调度、缓存命中率提升(L1达92%)和TAGE分支预测(准确率95%)。优化方向包括增大指令缓存和发射队列深度。实验验证了乱序执行在减少流水线停顿和提升吞吐量方面的显著优势。

MHD0815的博客 165

Exploring Automated Distractor Generation for Math Multiple-choice Questions via Large Language Mode

多项选择题(MCQ)在几乎所有级别的教育中都无处不在,因为它们易于管理、评分,并且是评估和实践中可靠的格式。MCQ最重要的方面之一是干扰因素,即旨在针对真实学生常见错误或误解的不正确选项。迄今为止,对于教师和学习内容设计师来说,制作高质量的干扰物的任务在很大程度上仍然是一个劳动和时间密集型的过程,其可扩展性有限。在这项工作中,我们研究了数学MCQ领域的自动干扰物生成任务,并探索了从上下文学习到微调的各种基于大型语言模型(LLM)的方法。

c_cpp_csharp的专栏 317

问题集合

1:需求,证件号码(身份证号)输入完回车,自动显示男女和出生日期 出现问题,只要一回车,男女的下拉框就会自动下拉,这是回车到下一个input的自动事件.解决方案,在证件号码后面加&lt;input style="visibility: hidden;width: 0px"/&gt;,这样回车就不会跳到性别上面了 2:No service was found ws访问报这个错,很有可能是粗...

fengyong7723131的专栏 1763

即插即用系列(代码实践) | CVPR 2025 WPFormer:小波与原型增强Transformer——表面缺陷检测SOTA,专治弱缺陷与杂乱背景

摘要:本文提出了一种基于小波变换和原型增强的Transformer模型(WPFormer),用于像素级表面缺陷检测。该模型针对工业场景中微弱缺陷难以识别和杂乱背景干扰严重的问题,创新性地将小波变换引入Transformer的注意力机制,通过频域信息分离噪声与边缘特征,同时利用原型向量引导查询,实现了更精准的缺陷定位。核心模块包括小波增强交叉注意力(WCA)和原型引导交叉注意力(PCA),适用于工业缺陷检测、伪装目标检测和医学图像分割等任务。代码已开源,支持即插即用集成到现有框架中。

分享顶会顶刊论文即插即用模块 301

Python 解析 Web 框架的 CSRF 防御机制

CSRF是一种攻击方式,攻击者利用受害者的身份,在受害者不知情的情况下向服务器发送恶意请求。例如,一个恶意网站可能包含一个隐藏的表单,当受害者访问该网站时,表单会自动提交到另一个网站,从而执行某些操作,如转账或更改密码。无论是Django还是Flask,它们都提供了有效的CSRF防御机制。作为开发者,我们应该充分理解和使用这些机制,以保护我们的应用免受CSRF攻击。同时,我们也应该教育用户,让他们知道如何识别和防范这类攻击。```

2501_91117049的博客 270

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Python 解析 CSRF、XSS、SQL 注入防御方案

CSRF、XSS和SQL注入是Web开发中常见的安全威胁。通过合理利用Python及其生态系统的工具和最佳实践,可以有效地防御这些攻击。无论是使用Django这样的高级框架还是编写自定义应用程序,都应牢记安全第一的原则,确保用户的隐私和数据的安全性。希望本文能为你提供有价值的参考,让你在未来的项目中更加自信地处理各种安全问题。```

2501_91142803的博客 335

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

CSRF是什么?有效的防御措施有哪些?

(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式。我们通过一个例子来了解它:小明登陆了一个银行网站,银行服务器发来了一个cookie,后来小明又访问了一个恶意网站, 这个恶意网站中有一个表单...</form>小明无意间触发了这个表单,银行服务器会收到带有正确cookie的请求,然后银行服务器会执行自己定义的操作transfer,这个时候就有可能把小明账户的钱给转走。自动防护策略:同源检测(Origin和Referer验证);token。

weixin_44471566的博客 312

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Web安全之CSRF攻击

CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的。PS:Cookie分为两种,Session Cookie(在浏览器关闭后,就会失效,保存到内存里),Third-party Cookie(即只有到了Exprie时间后才会失效的Cookie,这种Cookie会保存到本地)。假如博客园还是有个加关注的接口,已经限制POST,但博文内容是直接贴进HTML(未过滤),那就遭受XSS攻击。

xv7777666的博客 136

什么是CSRF跨站请求伪造

就像在茫茫大海上钓鱼,万一就真的碰到了呢。所以不管是 cookie 还是 token,从存储角度来看其实都不安全,都有暴露的风险,我们所说的安全更多 的是强调传输中的安全(可以在请求头中加入随机的密钥),可以用 HTTPS 协议来传输, 这样的话请求头都能被加密,也就保证了传输中 的安全。那么如果正常的用户误点了上面这张图片,由于相同域名的请求会自动带上 cookie,而 cookie 里带有 正常登录用户的 sessionid,类似上面这样的转账操作在 server 就会成功,会造成极大的安全风险。

2301_78646673的博客 835

csrf 笔记

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种网络安全攻击方式。攻击者诱导用户在当前已登录的 Web 应用程序上执行非预期的操作。例如,如果用户已登录银行网站,攻击者可以利用 CSRF 让用户执行转账操作,而用户可能毫不知情。CSRF 是一种利用用户信任的攻击方式,防御方法包括 Token 验证、Referer 检查、SameSite Cookie 等。

find_element_by_id的博客 415

什么是 CSRF 攻击,原理是什么

CSRF 攻击是一种跨站点请求伪造攻击,攻击者通过欺骗用户执行恶意请求来攻击 Web 应用程序。攻击者通常使用社交工程学技术,如钓鱼邮件和恶意广告,来欺骗用户点击恶意链接或打开恶意页面。例如,攻击者可以在一个网站上的一个表单中注入恶意代码,当用户访问这个网站时,恶意代码会自动发送请求到另一个网站,从而执行恶意操作,如更改用户密码或转移用户资金。由于用户在访问恶意网站时已经登录了另一个网站,因此攻击者可以利用用户的身份进行攻击。

stormjun的博客 1303

csrf跨站请求攻击

浅谈CSRF攻击方式    http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html  

weixin_34128534的博客 71

web安全之CSRF

CSRF是什么? CSRF(Cross Site Request Forgery),中文是跨站点请求伪造。CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的。 举个例子 简单版: 网站有个加关注的GET接口,blogUserGuid参数很明显是关注人Id,如下: http://www.cnblogs.com/mvc/Follow/FollowBlogger.aspx?blogUserGuid=4e

jklbnm12的博客 242

Web常见攻击手段-CSRF攻击

什么是CSRF攻击?跨站请求伪造(Cross-Site Request Forgery, CSRF),恶意网站通过脚本向当前用户浏览器打开的其它页面的 URL 发起恶意请求,由于同一浏览器...

hnjsjsac的博客 261

【Web安全】从零到一带你学习CSRF攻击

CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的。PS:Cookie分为两种,Session Cookie(在浏览器关闭后,就会失效,保存到内存里),Third-party Cookie(即只有到了Exprie时间后才会失效的Cookie,这种Cookie会保存到本地)。假如博客园还是有个加关注的接口,已经限制POST,但博文内容是直接贴进HTML(未过滤),那就遭受XSS攻击。

MachineGunJoe666 168

CSRF攻击

CSRF攻击

weixin_44705310的博客 259
上一篇: 什么是JavaScript闭包?闭包的使用场景?
下一篇: Cookie、LocalStorage与SessionStorage的理解
weixin_45290022
博客等级 码龄7年 9粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值