防御CSRF的第四种方法

CSRF漏洞——原理及防御 CSRF漏洞原理 CSRF(Cross Site Request Forgery, 跨站请求伪造)是一种网络的攻击方式,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF。 CSRF漏洞是因为web应用程序在用户进行敏感操作时,如修改账号密码、添加账号、转账等,没有校验表单token或者http请求头中的r... 阅读详情

转自邪恶team

 

我们知道,一般防御CSRF有三种方法,判断referer 、验证码 、token 。

对于判断referer来说,虽然客户端带用户状态的跨域提交,js和as已经无法伪造referer了;但是对于客户端软件和flash的提交,一般是不带referer的,据说一些山寨浏览器也不带。那么就需要为此开绿灯,但这样使得外站的flash请求伪造无法被防御。

而验证码弊端明显:会对用户造成影响。

token的问题也有一些:时效性无法保证;大型服务时,需要一台token生成及校验服务器;需要更改所有表单添加字段。

而最近我在做之类的防御时,想出了另外一种方法,跟xeye、woyigui等人在群里讨论了一番,认为应该是可行的,所以拿出来分享一下,并让其他的牛人看看是否有什么弊端

其实原理非常简单,与token也差不多:当表单提交时,用js在本域添加一个临时的cookies字段,并将过期时间设为1秒钟之后,然后再提交;服务端校验有这个字段即放行,没有则认为是CSRF。

token防csrf的原理是:无法通过ajax等方式获得外域页面中的token值,xmlhttprequest需要遵守浏览器同源策略;而临时cookies 的原理也是:cookies只能在父域和子域之间设置,也遵守同源策略。

我们可以简单看一个demo:

demo:

http://127.0.0.1/test.html :

 

http://127.0.0.1/test.php


 

test.html为浏览器端的表单,里面有三个按钮:

第一个是正常的表单提交;第二个是添加临时cookies后提交表单;第三个是以hook submit事件来添加临时cookies并提交。

defence csrf

正常的表单提交不会出现临时cookies字段,第二个和第三个按钮提交则会出现。大家可以反复点击按钮来查看结果,但需要注意时间间隔需超过1秒。(当然可以将test.html拿到外域看看,不过要注意form的target不能指向iframe了,可以以新窗口打开。由于同源策略,cookies肯定是带不过去的)

不过这种方式只适用于单域名站点,或者安全需求不需要“当子域发生XSS隔离父域”。因为子域是可以操作父域的cookies的,所以它的缺陷也比较明显:这种方法无法防御由于其他子域产生的xss所进行的表单伪造提交。而一个区分分域的自校验token是可以防止从其他子域到本域的提交的。 但如果对于单域而言,这种方法应该是足够的,并且安全性可能会略大于token。

和群里的几位大牛讨论了一下,也认为这种方式没有什么大问题,不过确实有一些小的疑问,譬如:

网络不流畅,有延迟会不会导致cookies失效。这个显然是不会的,因为服务端cookies是在提交请求的header中获得的。延时在服务端,不在客户端,而1秒钟足可以完成set Cookies+post header整个post表单的过程。

cookies的生成依赖于js,相当于这个token是明文的?这个的确,不管采取多少种加密,只要在客户端,就会被破解,不过不管怎样,csrf无法在有用户状态的情况下去添加这个临时cookies字段。虽然服务端curl等可以,但是无法将当前用户的状态也带过去。

外站是否可以伪造这个临时cookies呢?目前来看至少通过as和js无法向其他域添加和更改cookies的,通过服务端虽然可以伪造cookies,但获得不到目标域的用户状态。

如果目标域有XSS就完蛋了?恩,不过一般来说判断referer、token和简单的验证码(利用canvas识别?)也差不多完蛋了。

如果由于某种网络问题,获得不到cookies了呢?那么用户状态也不能获得了,用户只能再提交一次了。

ok,就这些!

说实话,这种新方法究竟是否真正有效我也没谱,说不定有某种BT的方式可以绕过?所以share一下,大家不妨看看是否真的有效。如果真有效,那么大概是一种最简单的,对代码改动最小,对服务器压力也最小的防御CSRF的方法了。

 

1 Responses to “防御CSRF的第四种方法”
  1. kj   On

    用CLICKHIJACK欺骗用户点几提交, 
    然后在设置COOKIE的时候 
    攻击者再发起一个CSRF请求

转自: http://xeyeteam.appspot.com/2010/03/4/defense-csrf-with-temporary-cookies.html

CSRF的防御 上一篇文章介绍什么是CSRF,CSRF-跨站请求伪造【Java】。 CSRF通常从第三方网站发起,被攻击的网站无法防止攻击发生,只能通过增强自己网站针对CSRF的防护能力来提升安全性。 上文中讲了CSRF的两个特点: CSRF(通常)发生在第三方域名。 CSRF攻击者不能获取到Cookie等信息,只是使用。 针对这两点,我们可以专门制定防护策略,如下: 阻止不明... 阅读详情

相关推荐

【csrf防御】springboot项目如何防御csrf

CSRF(Cross-Site Request Forgery) ,通过单词简单理解就是跨站点请求伪造,用通俗简单点就是攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的操作1、用户打开浏览器访问受信任网站A,输入用户名和密码请求登录网站A;2、在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;3、用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;

run_boy_2022的博客 1880

CSRF 攻击的防范措施

CSRF 攻击是一种常见的 Web 攻击,可以通过利用用户已登录的身份,向目标网站发送恶意请求,从而实现攻击目的。为了避免 CSRF 攻击,开发者需要采取一些防范措施,例如随机令牌、Referer 校验和 SameSite Cookie 等。建议采用多种防范措施,以增强 Web 应用程序的安全性。

程序员徐师兄的博客 4221

CSRF攻击原理与防御方法

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

墨痕诉清风的博客 5130

CSRF防御方案

我们也可以用自定义HTTP头的方法来防御CSRF攻击,因为虽然浏览器会阻止向外站发送自定义的HTTP头,但是允许向本站通过XMLHttpRequest的方式发送自定义HTTP头。比如,prototype.js这个JavaScript库就是使用这种方法,并且增加了 X-Requested-By头到XMLHttpRequest里面。

hdwlwang的博客 5378

k8s架构、工作流程、集群组件详解

Kubernetes(简称K8s,是因为 k 和 s 之间有八个字符)是一个开源的容器编排平台,用于管理云平台中多个主机上的容器化应用程序。它提供了一种机制,用于自动化部署、扩展和管理容器化应用程序的集群。Kubernetes的目标是让部署容器化应用程序变得简单高效。它提供了应用程序部署、规划、更新和维护的基本机制,同时具备强大的扩展性和可靠性。Kubernetes采用主从设备模型(Master-Slave架构),其中Master节点负责核心的调度、管理和运维任务,而Slave节点负责运行应用程序的容器。

qq_51545656的博客 4382

智能循迹小车之PID控制算法

从光电传感器获取信号确认小车和黑线的偏离角度,通过PID算法算出左右车轮速度,控制小车前进或者后退。

yzj199921的博客 4639

防止CSRF攻击三种方法

如何防止 CSRF 攻击,具体来讲主要有三种方式:充分利用好 Cookie 的 SameSite 属性、验证请求的来源站点和使用 CSRF Token。这三种方式需要合理搭配使用,这样才可以有效地防止 CSRF 攻击。

key_3_feng的博客 3536

LVI-SAM适配KITTI数据集避坑指南:IMU频率与数据同步问题解析

本文深入解析了将LVI-SAM框架适配KITTI数据集时,在IMU频率与多传感器数据同步方面遇到的核心挑战与解决方案。针对KITTI数据集中sync与extract两种数据包的差异,文章提供了从数据选择、参数调优到时间戳诊断与修复的完整避坑指南,帮助开发者实现稳定高效的SLAM系统部署。

7z8x2c4v6b9的博客 247

跨站请求伪造-CSRF防护方法

跨站请求伪造-CSRF防护方法                               CSRF(Cross-site request forgery跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。 1 CSRF攻击原理 CSRF攻击原理比较简单,如图1所示。其中We

hjjhce的博客 1021

交换机基本介绍(分类、性能指标、硬件构成及工作方式)

一、交换机的分类与性能指标 1.1交换机的分类 按照网络构成方式来分的话,交换机分为三类:接入层交换机、汇聚层交换机和核心层交换机。 按照OSI模型来划分的话,分为:二层交换机、三层交换机和四层交换机 还有一种按照硬件形态来划分,可以分成两类:盒式交换机和机框式交换机。 盒式交换机是一种有固定端口数,有时也会带有少量扩展槽的交换机。机架式交换机是一种插槽式的交换机,这种交换机扩展性较好,可支持不同的网络类型,可支持更大端口密度的网络。一般在数据中心的接入层都会采用盒式交换机,盒式...

monologuezjp的博客 4万+

保姆级教程:在寒武纪MLU370上从零部署YOLOv5(附安全帽数据集)

本文提供在寒武纪MLU370上从零部署YOLOv5的保姆级教程,涵盖环境配置、模型迁移、安全帽数据集处理、训练优化及推理部署全流程。通过实战案例展示MLU370在目标检测任务中的高效性能,适合开发者快速掌握国产AI加速卡的应用技巧。

weixin_27419879的博客 189

CSRF攻击防御方法

目前防御 CSRF 攻击主要有三种策略: 1、 验证 HTTP Referer 字段; 根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。对于每一个请求验证其 Referer 值 2、在请求地址中添加 token 并验证; 可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服...

段远山 2802

C#跨平台制图新纪元:Mapsui,一库在手,地图我有

深入学习Mapsui的渲染机制,定制属于你的地图样式,无论是颜色、图标还是文字,都可以随心所欲。

java专栏 1455

防御CSRF的第四种方法?

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

weixin_34132768的博客 591

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2661

广义S变换在MATLAB中的仿真

广义S变换是对信号进行时频分析的一种方法,它基于短时傅里叶变换(Short-Time Fourier Transform,STFT)和小波变换(Wavelet Transform)。广义S变换将信号分解成时频平面上的一系列矩形框,每个框内的数值表示相应时刻和频率下信号的能量。本文将介绍如何使用MATLAB进行广义S变换的仿真,并提供相应的源代码。函数,我们可以方便地计算信号的广义S变换,并获取时频平面上的时域和频域信息。广义S变换在信号处理和相关领域中具有广泛的应用,可以用于分析和处理各种类型的信号。

CodeNexus的博客 1119

csrf攻击原理与解决方法_CSRF攻击防御原理

0x01前言因为现代浏览器的工作机制原因,造成一种WEB攻击形态的存在, 这种攻击形式叫做CSRF攻击,以往我们是从攻击角度分析这种攻击的原理和操作。这次我们给出攻击原理同时,给出CSRF在服务器端的防御的解决方案。CSRF是现代WEB程序要面对的共通性问题,在很多流行的WEB框架中,都会将CSRF的问题直接在WEB框架层面解决。我们先抛出CSRF这个问题,然后介绍基于时间与签名的防护手...

weixin_39922749的博客 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

什么是CSRF攻击,以及如何防御

什么是CSRF攻击,以及如何防御1.CSRF攻击的概念2.CSRF攻击简单案例2.1 银行网站项目2.2 危险网站的项目2.3 测试3.默认的CSRF防御策略4前后端分离的CSRF防御策略 1.CSRF攻击的概念 1.CSRF全称为Cross Site Request Forgery,跨域请求伪造。这是一种很常见的Web攻击方式,如下为一个简单的攻击流程。 1)假设用户打开了一个银行网站,并且登录了 2)登录成功后,会返回一个cookie给前端,浏览器将cookie保存下来 3)用户在没有登出银行网站的情况

weixin_41359273的博客 9038

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

CSRF攻击与防御

目录 1 CSRF介绍 1.1、CRSF攻击原理 1.2、攻击举例 2 攻击实例 2.1 CSRF的原理 2.2 CSRF的防御 1 CSRF介绍 CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解: 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,...

mocas_wang的博客 3475

CSRF漏洞防御

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

一米八多的瑞兹的博客 3603

CSRF 攻击实验:无防御措施的 CSRF 漏洞

CSRF(Cross-Site Request Forgery),也称为XSRF,是一种安全漏洞,攻击者通过欺骗用户在受信任网站上执行非自愿的操作,以实现未经授权的请求。CSRF攻击利用了网站对用户提交的请求缺乏充分验证和防范的弱点。攻击者通常通过在受信任网站上构造恶意的请求链接或提交表单,然后诱使用户点击该链接或访问包含恶意表单的页面。当用户执行了这些操作时,网站会自动发送请求,包含用户的身份验证信息,而用户并不知情。在这个示例中,攻击者可能在自己的网站上构造一个页面,包含上述代码。

Flag少侠的博客 2517

【CSRF】防御

文章摘要:HTTP Referer机制通过验证请求来源防御CSRF攻击,但存在因隐私设置、浏览器策略等导致缺失或伪造的局限性。现代Web安全推荐多层防护:核心是CSRF Token(随机生成并验证),辅以SameSite Cookie和二次确认机制。需注意Token也可能通过XSS被窃取,如利用iframe注入窃取user_token。防御需结合Token时效性、HTTPS传输及严格验证,构建纵深防御体系。演示显示仅依赖Referer或单层Token均存在绕过风险,关键业务需组合防护措施。(148字)

2302_80252080的博客 1232

CSRF 攻击及防御

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种攻击方式,攻击者通过伪造受害者的请求,以受害者的身份执行恶意操作。CSRF 攻击利用了用户的身份认证信息(如登录状态或会话 Cookie),使得用户在不知情的情况下执行攻击者指定的操作,通常是恶意修改用户数据或发起不正当的交易请求。CSRF 攻击是一种利用用户的身份认证信息伪造请求的攻击方式。使用 CSRF Token:为每个请求生成并验证唯一的 Token。使用 SameSite Cookie 属性。

qq_60535125的博客 1000

csrf攻击原理与解决方法_前端 | CSRF 的攻击类型与防御

1. CSRF 的攻击类型CSRF,全称 Cross Site Request Forgery,跨站请求伪造,也被称为 XSRF、one-click attack 或者 session riding,是一种劫持受信任用户向服务器发送非预期请求的攻击方式。攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用...

weixin_39680380的博客 2050
上一篇: 反射型XSS漏洞
下一篇: Anehta -- Boomerang(回旋镖),如何将反射型XSS变成持久型XSS:论跨域获取cookie
fallinsky
博客等级 码龄18年 24粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值