CSRF攻击原理解析二

CSRF攻击原理与解决方法 一、 前言 因为现代浏览器的工作机制原因,造成一种WEB攻击形态的存在, 这种攻击形式叫做CSRF攻击,以往我们是从攻击角度分析这种攻击的原理和操作。这次我们给出攻击原理同时,给出CSRF在服务器端的防御的解决方案。CSRF是现代WEB程序要面对的共通性问题,在很多流行的WEB框架中,都会将CSRF的问题直接在WEB框架层面解决。 我们先抛出CSRF这个问题,然后介绍基于时间与签名的防护手段,并且给出的这种防御手段的具体代码实现。过程中使用了Lua语言进行实现功能, LUA是一种容易理解的脚本语言,大家 阅读详情

CSRF攻击原理解析二

Author: rayh4c [80sec]
EMail: rayh4c#80sec.com
Site: http://www.80sec.com
Date: 2008-12-31
From: http://www.80sec.com/release/csrf-securit2.txt

0×00 说明提醒

由于CSRF攻击原理解析老版本文档中的部分内容不是很严谨,一定程度上误导了大家,这里我表示歉意。这个文档将重新从浏览器安全和cookie原理的角度对CSRF漏洞进行分析,理顺CSRF的攻击原理,修正老版本文档中的部分错误概念和思路,同时希望这次的修正可以帮助大家更深层次的研究Web安全问题。

0×01 本地cookie和内存cookie的误区

在老文档中我提出了本地COOIKIE和内存cookie两个概念,这两个概念是相对于系统和浏览器来说明的。本地cookie是浏览器保存在系统中的数据,在设置了cookie的expires参数的值也就是指定了cookie的失效时间的情况下,IE等浏览器会将cookie以文本格式保存在浏览器的临时目录里。内存cookie是当前浏览器进程保存的数据,在没有设置cookie的expires参数值的情况下,当浏览器进程结束时内存cookie也就消失了。具体参考如下cookie的标准格式:

Set-Cookie: <name>=<value>[; <name>=<value>] [; expires=<date>][; domain=<domain_name>] [; path=<some_path>][; secure][; HttpOnly]

在这里本地cookie和内存cookie的概念存在一个误区,误区存在于我们对于cookie与Web程序身份认证及会话的理解,首先我们必须明晰Session的概念,Session是由服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID为标识符来存取服务器端的Session存储空间。SessionID可以由cookie保存,用户访问网站时,SessionID将会随cookie提交到服务器端。服务器也可以通过URL重写的方式来传递SessionID的值,但是在URL中传递SessionID是存在很大的安全风险的,黑客可能获取HTTP请求的来源信息等手段直接就得到了客户端的SessionID。

其次我们应该认识到cookie和session的区别,因为这里的概念是混淆和模糊的。HTTP协议是无状态的,客户端与服务端无法长期的保存身份认证及会话状态,所以便需要cookie机制,在客户端以文件的形式保存会话状态。而session机制则是在服务器端保持状态,不需要长期保持会话状态,但是服务器端保持状态的同时在客户端也需要保存一个标识,前面我提到了使用URL传递SessionID的安全风险,所以session机制需要借助于cookie机制。原理上cookie只是做为SessionID的一个载体,我们只需要区分cookie机制和session机制即可。

最后我对老文档中关于本地cookie和内存cookie的概念做一次修正,参照上面的分析和Web标准,这两种cookie严谨的说,应该称为会话cookie和持久化cookie。下面的0×02、0×03部分我将对老文档中的浏览器的安全缺陷内容做第二次的修正。

0×02 浅析cookie的同源策略

同源策略是今年被提起比较多的一个安全概念,这个策略是浏览器的安全基础,cookie做为浏览器的一个功能,自然也考虑到了同源策略,cookie的同源策略分为两个方面,第一个方面涉及到cookie的domain和path两个值,浏览器根据这两个值判断什么样的域名和页面能够读取cookie。第二个方面是第一方cookie和第三方cookie两个概念,第一方cookie是指当前正在查看的网站的cookie,在这个情况下对同源的HTTP请求都读取cookie发送,自然没有任何限制。而第三方cookie来自当前正在查看的网站以外的网站的cookie,第三方cookie可以是会话cookie和持久化cookie,我们正在查看的网站可能包含了第三方的资源,在这种情况下浏览器会因为考虑到同源策略,而判断从当前浏览的网站对站外的请求是否允许读取第三方cookie发送。

cookie的同源策略可能比较晦涩,但是并不难理解,我们拿javascript的同源策略类比,比如AJAX不允许跨域的GET和POST请求,而正常的HTML代码中带有文件请求的标签实际上是属于GET请求,当网站嵌入了第三方的文件资源,也就产生了跨域的请求,同源策略是不可能干预这类正常的请求的,但是从安全的角度仍然有必要限制第三方cookie的存取。

0×03 浏览器的差异和安全缺陷

不同浏览器对于安全的考虑也是不同的,当前的主流浏览器就有很大的区别,Internet Explorer默认设置阻止第三方cookie的读取,而Firefox和Chrome默认是允许所有的cookie。这个是所有浏览器都有的功能,只是默认设置上存在差异,而这些差异才是真正导致CSRF攻击成功与否的关键。

在对第三方cookie的读取上,浏览器实际上普遍存在着一个安全缺陷,那就是浏览网页时不会拦截内存cookie,内存cookie在WEB应用上是套用的session机制,浏览器开发时并没有从Web应用的角度去考虑安全,前面我提到了第三方cookie可以是会话cookie和持久化cookie,而多数浏览器并没有把内存cookie当成一个真正意义上的cookie处理。同时内存cookie有一个特性,这个特性就是内存cookie共享机制,比如从当前浏览器进程新访问的网页或新打开的浏览器窗口都会共享内存cookie,而现在的主流浏览器都流行多标签页浏览,所以给CSRF攻击又带来了便利。

0×04 P3P头的隐患

这一部分我将对Javascript劫持技术做部分的修正,WEB2.0程序员应该熟知JSON技术,简单的想一想,如果一个JSON数据接口是放在二级域名的上,按照cookie的同源策略,跨域请求的第三方cookie是会被拦截的,WEB2.0程序员想使用JSON技术来开发一个大型的WEB应用几乎是不可能实现的,而这个时候P3P头就起了大作用,P3P头是W3C制定的一项关于cookie的标准,现在大型网站的各种WEB2.0应用几乎都使用了P3P头,服务器端只要给HTTP请求返回内容加入如下的HTTP头就能实现跨域访问cookie:

P3P: CP=”CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV”

P3P头解决了Web应用上的难题,却又给Web应用带来了新的安全隐患。浏览器读取了P3P头,就等于打开了第三方cookie的读取的开关,整站的Web应用就被笼罩在CSRF攻击的阴影下,程序员在开发时往往要多考虑一方面的安全因素,那就是站外提交,防止站外提交通常是判断HTTP头Referer,从而分辨请求是来自站内的正常请求,还是黑客在站外构造的CSRF攻击。同时又得考虑HTTP请求没有来源的特殊情况,这类情况可能是网络设备或者浏览器限制了发送HTTP头Referer,一般程序员按常理也会对没有HTTP头Referer的请求放行,这里就存在了一个巨大的风险,程序员没有考虑到FLASH的请求是不会包含HTTP头Referer的,这就是为什么在考虑了CSRF攻击防护的情况下,某些CSRF攻击还能够成功的原因。

0×05 总结和后记

应用和安全是一个矛盾体,Web安全也并不是某些人想象的那样属于奇技淫巧,更深层次的研究会发现很多简单的问题并不简单,由于这篇文档写得比较仓促,不足之处大家可以发EMAIL和我沟通。这是80SEC在2008最后一篇文档,藉此感谢所有支持80SEC的朋友,感谢80SEC团队的其他成员给我的帮助,祝大家2009年更上一层楼。

参考:

http://www.80sec.com/session-hijackin.html

http://blog.youkuaiyun.com/lake2/archive/2008/04/02/2245754.aspx

http://www.80sec.com/csrf-with-flash.html

http://www.80sec.com/csrf-securit.html

本站内容均为原创,转载请务必保留署名与链接!
CSRF攻击原理解析二 : http://www.80sec.com/csrf-securit2.html

什么是 CSRF?如何防止 CSRF 攻击? CSRF,全称 Cross-Site Request Forgery,中文翻译为跨站请求伪造,它是一种网络安全漏洞,攻击者通过伪造用户的请求,利用用户在已登录的情况下的身份验证信息,向服务器发送恶意请求,从而执行未经用户授权的操作。CSRF攻击通常发生在用户已经登录了某个网站的情况下,攻击者在用户不知情的情况下利用用户的身份信息发送恶意请求,导致服务器误以为是用户发送的合法请求。用户登录到一个网站,并且被骗点击了攻击者构建的另一个网站链接,这代表了 CSRF 的“跨站点”部分。 阅读详情

相关推荐

Linux安装Oracle sqlplus客户端工具

Linux安装Oracle sqlplus客户端工具

优快云_Nan_Jiang_Li的博客 2776

CSRF***原理解析二

Author: rayh4c [80sec]EMail: rayh4c#80sec.comSite: [url]http://www.80sec.com[/url]Date: 2008-12-31From: [url]http://www.80sec.com/release/csrf-securit2.txt[/url] 0×00 说明提醒 由于CSRF***原理解析老版本文档中的部分内容...

weixin_34192993的博客 123

ADF4002分频器避坑指南:常见配置错误及解决方案

本文深入解析了ADF4002分频器在实战应用中的常见陷阱与解决方案。内容涵盖寄存器配置逻辑、硬件PCB布局要点、软件驱动时序细节及系统化调试方法,重点阐述了如何避免因配置错误导致芯片无法正常工作的问题,帮助工程师高效完成高精度频率合成系统设计。

weixin_29192141的博客 96

跨站点请求伪造(Cross-Site Request Forgery:CSRF)解决方案

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33806300的博客 901

02-基于ART-PI开发板创建USB CDC 虚拟串口设备

本例在ART-PI开发板上,基于RT-Thread 5.0,5虚拟了一个USB32 CDC串口设备。

arm_fan的专栏 1885

Windows非分页缓冲池内存泄漏实战:PoolMon与RAMMap高效排查指南

本文详细介绍了Windows系统中非分页缓冲池内存泄漏的实战排查方法。当系统出现卡顿且内存占用异常增长时,通过RAMMap工具快速定位非分页缓冲池异常,并利用PoolMon监控内核内存分配标签,精准锁定泄漏源。文章提供了从确认症状、安装工具到使用findstr命令溯源驱动文件的完整五步排查流程,并总结了常见泄漏标签与解决方案,帮助用户高效解决深层系统内存问题。

weixin_28455801的博客 1008

CSRF攻击原理及防护

一、CSRF是什么 CSRF全称为跨站请求伪造(Cross-site request forgery),是一种网络攻击方式,也被称为 one-click attack 或者 session riding。 二、CSRF攻击原理 CSRF攻击利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。 三、CSRF攻击实例 角色: 正常浏览网页的用户:User 正...

diu_brother的博客 2万+

解决Calibre中license的错误

本次解决了Calibre在Cadence 617 virtuoso版本中运行不了的错误,在遇到问题的时候,我也跟你们一样,首先是上网查询为什么运行不了呢?明明我安装了之后里面有Calibre的,我当时也是这样的疑惑,一点Calibre运行LVS的时候,一片空白,然后就出现了license的错误,后来点点点,看看看,搜搜搜,最终解决了这个问题。虚拟机是VMware16版本,cadence617,Calibre是2015版本。旨在记录遇到的实际问题。

yytu231的博客 1万+

CSRF攻击解析:原理、防御与应对策略

本文将带你深入了解CSRF攻击的原理,探讨如何防御和应对CSRF攻击,保护你的网站和用户数据安全。CSRF攻击是一种利用用户登录状态进行的攻击手段,通过深入了解CSRF攻击的原理、防御和应对策略,我们可以更好地保护网站和用户数据安全,为用户提供一个安全、可信赖的网络环境。

你若盛开,清风自来 1894

OmniDrive(2):环境搭建

项目中使用的是全量的数据集(full dataset v1.0), 数据量比较大,训练验证(trainval) + test 总计200多G的数据,单独一个个下载会比较慢。参数,否则安装的时候会自动卸载已安装好的torch,重新安装最新版本的torch,这是不允许的。在cuDNN官网下载,默认下载的是最新版本的cuDNN,我们这里点击。,== 博文中详细介绍了完整的cuda和cudnn的安装过程==分析: 这是因为yapf 安装的版本不对,需要安装特定的版本。出现训练的loss变化,就说明可以正常训练了。

@bangbang的博客 623

2、机器人控制技术:阻抗/导纳控制与强化学习的融合

本文探讨了阻抗/导纳控制与强化学习在机器人控制中的融合应用。阻抗/导纳控制广泛应用于外骨骼和跟踪控制,通过改进方案提升建模误差下的鲁棒性;强化学习则为解决维度灾难、实现最优交互提供了有效途径,尤其在大输入空间、连续时间系统、冗余机器人及鲁棒控制中表现突出。结合近似器与合理奖励设计,强化学习可在无模型情况下实现高效控制。未来,两者融合有望推动更智能、更安全的机器人系统发展。

ice55的博客 299

CSRF攻击的原理和spring security对CSRF攻击的解决方法

对于CSRF攻击的原理,直接上图然后解释一下 一个用户通过浏览器成功登录一个网站,登陆成功后,服务器会返回一个该用户的唯一标识放入浏览器Cookie中,以此作为用户之后操作的唯一凭证。假设此时该用户在此网站中请求一个表单类的网页,这时候用户又打开了另外的一个网站,而这个网站是一个病毒网站,它直接窃取了Cookie信息,当然也包括唯一身份凭证(所以为什么说cookie不推荐保存重要信息,是有原因的),通过唯一身份凭证,病毒网站直接进行用户所做的表单提交,而服务器是通过这个凭证来匹配用户信息的,服务器这时候无

qq_42956993的博客 5327

SAP_PP模块中MRP中信号灯简介

一、信号灯的作用二、常见的信号灯颜色及含义三、信号灯的来源四、常见场景示例示例1:物料满足所有需求示例2:生产订单已延迟示例3:缺料或未产生计划订单五、相关事务码参考六、如何应对红色或黄色信号灯?七、前台操作说明在 SAP PP 模块中,**MRP(物料需求计划)运行结果中的“信号灯”是一种非常直观的可视化提示工具,用于帮助用户快速识别物料计划是否存在异常或需要关注的问题。这些信号灯通常出现在MD04(库存/需求清单)、MD05(单物料MRP清单)、MD07(MRP列表)**等事务代码的界面中。

我小时候很黑的博客 626

CSRF 攻击详解

禁用 CSRF 保护有其合理的应用场景,特别是在开发 RESTful API、使用其他防护措施、内部应用和非浏览器客户端时。然而,需要谨慎对待这个决定,并确保在适当的场景中启用 CSRF 保护,以防范潜在的安全风险。

只为成功找方法 不为失败找借口 5614

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

DVWA之CSRF攻击(Low&medium&High)

CSRF,全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用。在20...

liweibin812的博客 5614

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

网络安全-跨站请求伪造(CSRF)的原理、攻击及防御

目录 简介 原理 举例 漏洞发现 链接及请求伪造 CSRF攻击 不同浏览器 未登录状态 登录状态 代码查看 防御 用户 供应商(程序员) 简介 跨站请求伪造(Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF .

关注网络安全、云原生安全 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

深入解析CSRF攻击

在网络安全领域,CSRF(Cross-site Request Forgery,跨站请求伪造)是一种常见的攻击手段,它通过挟持用户在当前已登录的Web应用上执行非本意的操作,从而对用户和网站造成严重威胁。本文将详细介绍CSRF攻击的原理、危害以及有效的防御策略。

前端小巷子的博客 1001

Java -- CSRF 攻击原理及防御

什么是CSRF攻击 CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证(比如cookie),绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。 一个典型的CSRF攻击有着如下的流程: 1、 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A; 2、在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可

tryheart的博客 6140

什么是CSRF?CSRF漏洞原理攻击与防御

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

jennycisp的博客 1126

CSRF攻击原理

什么是CSRF CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击...

lsd284504557的博客 1718

必读篇!CSRF攻击原理与解决方法

CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。CSRF具体表现为攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…造成的问题包括:个人隐私泄露以及财产安全。

Galaxy_0的博客 1776

CSRF攻击

CSRF攻击原理 什么是csrf? CSRF(Cross-site request forgery)跨站请求伪造:也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与X...

秋水的博客 1547

什么是CSRF攻击,该如何防护CSRF攻击

这种攻击通常发生在用户登录到可信网站并且有活动的会话时,攻击者通过诱导用户访问恶意链接或网站,冒充用户向受信任网站发出请求,从而进行恶意操作。攻击者通过构造恶意请求,让用户无意中向受信任网站发出请求,而网站认为请求是由合法用户发出的,从而执行不被授权的操作。攻击者构造一个恶意请求,通过用户的浏览器发送给受信任网站,由于浏览器会附带用户的Cookie,受信任网站认为这是合法请求。银行系统收到请求后,由于用户的身份信息有效,系统会认为这是合法请求,从而执行操作。如果一致,表示请求是可信的。

dexunxiaoqian的博客 1596
上一篇: CSRF攻击原理解析
下一篇: WAP Web Application Security
fallinsky
博客等级 码龄18年 24粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值