Laravel框架之CSRF跨站请求伪造

article/2025/9/23 3:35:36

一、CSRF攻击
1、什么是CSRF攻击
CSRF是跨站请求伪造(Cross-site request forgery)的英文缩写,

原理图示:
在这里插入图片描述

csrf在laravel框架中的使用,就是在客户端form表单中设置一个_token表单域

同时把该表单域的值记录给session,提交表单给服务器后,服务器判断form表单中的_token与session中的_token是否一致,一致就进行正常的后续处理,否则该表单非法并舍弃之。

Laravel提供了一个全局帮助函数csrf_token来获取该Token值,因此只需在视图提交表单中添加如下HTML代码即可在请求中带上Token:

执行route/web.php路由的请求,只要请求方式为post/put/patch,都会执行csrf验证,如果有哪个路由请求不要经过csrf校验,就把该请求地址设置给VerifyCsrfToken 中间件
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

执行route/web.php路由的请求,只要请求方式为post/put/patch,都会执行csrf验证,如果有哪个路由请求不要经过csrf校验,就把该请求地址设置给VerifyCsrfToken 中间件

class VerifyCsrfToken extends BaseVerifier
{/***从CSRF验证中排除的URL* @var array*/protected $except = ['stripe/*',];
}

2、CSRF案例
注意:在 laravel中,默认情况下POST请求的路由都必须要通过令牌验证的,也就是在post请求的表单中,都必须携带_token的。

(1)定义一个路由

//展示表单的路由

Route::get(‘register’,‘DemoController@register’);

//接收表单的路由

Route::post(‘registerok’,‘DemoController@registerok’);

(2)根据路由,新建一个DemoConotroller的控制器,并添加如上两个方法
在这里插入图片描述
(3)建立一个register对应的视图文件
在这里插入图片描述
视图文件内容如下:
在这里插入图片描述
4)为了防止跨域提交表单,需要在表单里面,添加一个生成令牌的标签。
在这里插入图片描述
解析效果如下图:
在这里插入图片描述
在使用post方式提交数据时,如果没有token令牌,会报错 419 或者如下图:
在这里插入图片描述
要注意:{{csrf_field()}}和{{csrf_token()}}的区别

{{csrf_field()}}直接生成

{{csrf_token()}}直接生成令牌字符串。

3、从CSRF验证中排除指定URL
可以设置哪些post请求的路由,不需要令牌验证。

并不是所有请求都需要避免CSRF攻击,比如去第三方API获取数据的请求。

可以通过在VerifyCsrfToken(app/Http/Middleware/VerifyCsrfToken.php)中间件中将要排除的请求URL添加到$except属性数组中:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/94FpkAlT.shtml

相关文章

什么是CSRF(跨站请求伪造)?

文章目录 1. CSRF是什么&#xff1f;1.1 CSRF攻击细节CSRF攻击原理及过程如下&#xff1a; 2. CSRF漏洞检测3. 防御CSRF攻击&#xff1a;3.1 验证 HTTP Referer 字段3.1.1 优点&#xff1a;3.1.2 缺点: 3.2 在请求地址中添加 token 并验证3.3 在 HTTP 头中自定义属性并验证 1. …

WordPress 跨站请求伪造漏洞

WordPress 跨站请求伪造漏洞 漏洞ID2500593漏洞类型跨站请求伪造发布时间2021-07-08更新时间2021-07-09 CVE编号CVE-2021-20781 CNNVD-IDCNNVD-202107-420漏洞平台N/ACVSS评分N/A 漏洞简介 WordPress是Wordpress基金会的一套使用PHP语言开发的博客平台。该平台支持在PHP和My…

056 CSRF跨站请求伪造

文章目录 一&#xff1a; 概述二&#xff1a;关键点三&#xff1a;目标四&#xff1a;CSRF攻击如何触发&#xff1f;五&#xff1a;实战&#xff1a;CSRF场景复现六&#xff1a;CSRF防御6.1 无效的防御6.2 有效的防御 一&#xff1a; 概述 跨站请求伪造&#xff08;cross site…

CSRF - 跨站请求伪造

什么是CSRF? CSRF&#xff08;Cross-site request forgery&#xff09;跨站请求伪造&#xff1a;也被称为“One Click Attack”或者Session Riding&#xff0c;通常缩写为CSRF或者XSRF&#xff0c;是一种对网站的恶意利用。尽管听起来像跨站脚本&#xff08;XSS&#xff09;&a…

CSRF(跨站请求伪造)

目录 CSRF 原理及过程 概述 关键点 pikachu靶场之CSRF GET型 POST型 Token 防御 如何挖掘CSRF漏洞 使用burp验证csrf 总结 CSRF (Cross-Site Request Forgery) CSRF是一种欺骗受害者提交恶意请求的攻击&#xff0c;攻击者盗用你的身份&#xff0c;向服务器发送请求…

Spring Boot项目CSRF (跨站请求伪造)攻击演示与防御

CSRF ,Cross-site request forgery,跨站请求伪造。是常见的网络攻击的方式之一,2007年曾被列为互联网20大安全隐患之一。攻击过程是攻击者伪造用户的浏览器请求,访问一个用户曾经访问过的网站, 使目标网站误以为是用户的操作而执行命令。 本篇j基于Spring Boot创建项目,…

每日漏洞 | 跨站请求伪造

01 漏洞描述 HTTP的无状态性&#xff0c;导致Web应用程序必须使用会话机制来识别用户。一旦与Web站点建立连接(访问、登录)&#xff0c;用户通常会分配到一个Cookie&#xff0c;随后的请求&#xff0c;都会带上这个Cookie&#xff0c;这样Web站点就很容易分辨请求来自哪个用户&…

CSRF跨站请求伪造

CSRF介绍&#xff1a; CSRF中文名称&#xff1a;跨站请求伪造&#xff0c;是一种“ 挟持用户”在当前已登陆的Web应用程序上执行“ 非本意操作”的攻击方法。 一、CSRF回放攻击流程 套用老师所给的一张攻击原理图 从这张流程图里我们总结一下CSRF攻击生效所需要的两个必要条件 …

【CSRF-01】跨站请求伪造漏洞基础原理及攻防

目录 1 CSRF概述2 CSRF攻击过程及原理2.1 CSRF场景例子2.2 攻击过程2.3 原理2.4 攻击成功的条件&#xff1a; 3 CSRF攻击方式/如何触发5 CSRF的防御5.1 一些无效的防御手段5.2 有效的防御手段 6 总结参考文章 1 CSRF概述 定义&#xff1a;CSRF&#xff08;Cross-site request …

一文带你学习跨站点请求伪造(CSRF)

一文带你学习跨站点请求伪造&#xff08;CSRF&#xff09; 1.何为CSRF2.浏览器的Cookie策略3.P3P头的副作用4.CSRF攻击流程5.CSRF的分类GET型POST-表单型POST-JSON型 6.CSRF的快速验证7.CSRF的防御验证码Referer CheckAnti CSRF Token 1.何为CSRF CSRF的全名是Cross Site Requ…

flask中的csrf防御机制

csrf概念 CSRF&#xff08;Cross-site request forgery&#xff09;跨站请求伪造&#xff0c;也被称为“One Click Attack”或者Session Riding&#xff0c;通常缩写为CSRF或者XSRF&#xff0c;是一种对网站的恶意利用。尽管听起来像跨站脚本&#xff08;XSS&#xff09;&…

跨站请求伪造(csrf)

1、csrf介绍 CSRF (Cross-site request forgery&#xff0c;跨站请求伪造)也被称为One Click Attack或者Session Riding&#xff0c;通常缩写为CSRF或者XSRF&#xff0c;是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS)&#xff0c;但它与XSS非常不同&#xff0c;XSS利用站…

跨站请求伪造

1. 什么是跨站请求伪造&#xff08;CSRF&#xff09; CSRF&#xff08;Cross-site request forgery跨站请求伪造&#xff0c;也被称为“One Click Attack”或者Session Riding&#xff0c;通常缩写为CSRF或者XSRF&#xff0c;是一种对网站的恶意利用。尽管听起来像跨站脚本&…

压缩包破解

压缩包破解 文章目录 压缩包破解伪加密压缩包格式压缩源文件数据区压缩源文件目录区压缩源文件目录结束标志真加密字节对比伪加密字节对比伪加密 工具 ZipCenOp.jarjoin 破解fcrackzip 或者 ziperello 暴力破解伪加密 压缩包格式 一个 ZIP 文件由三个部分组成: 压缩源文

android apk解包和打包

最近项目开发&#xff0c;我的jar包和资源文件给别的同事打包&#xff0c;这样我自己测试很麻烦&#xff0c;每次改一点东西都要找人打包测试&#xff0c;很麻烦&#xff0c;就想着能够解包&#xff0c;更新一下自己的部分代码&#xff0c;再打包apk直接测试。后来找了一些网上…

python基础语法之拆包(解包)

理解和使用python中的拆包会让我们的代码变得流畅&#xff0c;不仅对自己的手关节有好处&#xff0c;也使看官觉得很赏心悦目&#xff0c;既然拆包这么香那就抓紧用起来吧。 1、直接交换变量的本质 在C&#xff0c;C和Java语言中如果想交换两个变量的值就必须用到第三个临时变…

Python中的解包

一、解包&#xff0c;英文名字叫UNPACKING,就是讲容器中所有的元素逐个取出来。 python中解包是自动完成的&#xff0c;例如&#xff1a; a,b,c [1,2,3] print(a,b,c) 1 2 3 除列表对象可以解包外PYTHON中的任何可迭代对象都可以进行解包&#xff0c;元组&#xff0c;字典&…

【Python小知识】:什么是序列解包

前言&#xff1a; &#x1f482;作者简介&#xff1a;大家好&#xff0c;我是翼同学&#xff01; &#x1f4c3;个人主页&#xff1a;翼同学的CSDN博客 &#x1f525;系列专栏&#xff1a;【python学习笔记】 &#x1f44f;备注&#xff1a;如果文章有误&#xff0c;请指正&…

python 抓包与解包

我使用的环境为&#xff1a;Windows10、python3.6、scapy 2.4.0 一、基本知识 Sniff方法定义&#xff1a;sniff(filter"",iface"any", prnfunction, countN)filter的规则使用 Berkeley Packet Filter (BPF)语法 iface用来指定要在哪个网络接口上进行抓包&…

.pkg文件解包

PePKG下载 1、拖入 RePKG.exe文件到cmd中 2、输入 extract&#xff0c;并将需要解包的 .pkg文件拖入cmd中 3、输入 -o 4、选择输出路径 创建一个文件拖入cmd中 回车即可完成解包