首页 > 其他分享 >关于laravel的csrf token

关于laravel的csrf token

时间:2024-11-08 10:21:05浏览次数:1  
标签:laravel csrf Token token session CSRF 请求

1.csrf token作用

  laravel的CSRF TOKEN是为了防止CSRF(Cross-Site Request Forgery,跨站请求伪造)攻击。

2. csrf token的生成

  StartSession 中间件在会话初始化时会检查 session 是否包含 CSRF Token,如果没有,Laravel 会调用生成方法自动生成一个 Token 并存储在 session 中。

3. csrf token在后台端的获取,比如控制器

使用session获取   
$token = $request->session()->token(); 使用csrf_token辅助函数
$token = csrf_token();

4.csrf token在浏览器端的使用

  在blade视图中,使用balde的指令@csrf, 生成隐藏的token input,生成的结果如下。一般用于表单内部,用于表单的提交来进行csrf认证

<input type="hidden" name="_token" value="ISHLfhAZ62oZdrloYhHQId8DRf6g3GJinzgLZg8P">

  在ajax请求中

  在html的head部分,生成如下meta

<meta name="csrf-token" content="{{ csrf_token() }}">

  在 AJAX 请求中添加 Token,例如在使用 jQuery 的情况下:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

 

5. csrf token的验证

  VerifyCsrfToken 中间件的 handle() 方法会从请求中提取 Token,并将其与存储在用户 session 中的 Token 比较,以确定请求是否有效。

  中间件会在请求参数 token或者请求头X-CSRF-TOKEN来提取token, 提取代码如下。所以不管哪种请求(表单或者ajax),只要保证有token就可以就行验证

$token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');

   验证一般只用于 POSTPUTPATCHDELETE 请求。对于get请求一般不会进行csrf token的验证, 所以尽量不要使用get方法处理增删改

 

标签:laravel,csrf,Token,token,session,CSRF,请求
From: https://www.cnblogs.com/gaoBlog/p/18534573

相关文章

  • laravel:optimize和clear(laravel11)
    一,optimize创建的文件在哪里?执行optimize:$phpartisanoptimizeINFOCachingframeworkbootstrap,configuration,andmetadata.config................................................................57.67msDONEevents.................................
  • 如何看懂sa-token 第一篇 是怎么设计被spring加载的
    2023年入职了一家公司,他们给到我这边的系统架构我看基本都用到了sa-token,抱着去学习的态度去官网看了文档Sa-Token,感觉有些头大,摸不着头脑,然后尝试去下载源码来看gitclonehttps://gitee.com/dromara/sa-token.git我看的时候,最新版本是v1.39.0,代码一大推,实在看不明白看懂源......
  • 使用python编写一个获取token的接口
    importrequestsfromrequests.authimportHTTPBasicAuthdefget_token():"""获取token的逻辑"""url="https://devxxxxxxxxtion/v2/token"#替换为实际的token获取URLclient_id="hAixxxeMPNxxxxGjF......
  • Vue项目中动态路由与权限控制:router.beforeEach的使用及无token重定向登录页
    在现代前端项目中,权限控制是一个非常重要的环节。VueRouter作为Vue官方的路由管理器,为我们提供了强大的路由管理功能。在本文中,我们将探讨如何在Vue项目中使用router.beforeEach钩子函数来实现动态路由权限控制,并在用户未登录时自动重定向到登录页。步骤一:登录并获取Token首......
  • 双token无感刷新nodejs+vue3(保姆级教程)
    什么是双Token无感刷新?双Token无感刷新机制使用两个不同的token来管理用户的身份验证和会话。通常情况下,这两个token是:访问Token(AccessToken):用于访问受保护的资源,通常具有较短的有效期(如15分钟到1小时)。当用户进行API请求时,附带此token以证明其身份。刷......
  • ATC:多快好省,无参数token reduction方法 | ECCV'24
    来源:晓飞的算法工程笔记公众号,转载请注明出处论文:AgglomerativeTokenClustering论文地址:https://arxiv.org/abs/2409.11923论文代码:https://github.com/JoakimHaurum/ATC创新点提出了层次token聚类(AgglomerativeTokenClustering,ATC),这是一种新型的无参数层次合......
  • 基于Redis的Token认证机制
    Redis数据库设计/***rediskey前缀*/publicstaticfinalStringREDIS_KEY_PREFIX="easylive:";/***验证码key*/publicstaticfinalStringREDIS_KEY_CHECK_CODE=REDIS_KEY_PREFIX+"check_code:";/***Rediskeytokenweb*/publicstati......
  • 微信小程序 thinkphp/laravel小型酒店宾馆管理系统_71z0e
    文章目录项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取项目介绍本文工作研究的主要内容是如何实现酒店信息管理,和酒店各种信息的系统化、规范化和自动化。在设计系统时,分别设......
  • Dify 中的 Bearer Token 与 API-Key 鉴权方式
    本文使用Difyv0.10.2版本,在Dify中包括BearerToken与API-Key鉴权这2种方式。console(URL前缀/console/api)和web(URL前缀/api)蓝图使用的是BearerToken鉴权方式,而service_api(URL前缀/v1)蓝图使用的是API-Key鉴权方式。console蓝图通过login_required装饰......
  • 微信公众号服务器配置一直提示token验证失败?
    本地使用postman,请求了要设置在微信公众号服务器回调的URL,可以正常返回echostr,点击提交,一直报错token验证失败,请问这个是什么原因呢? 解决办法:解决了,我去,好坑啊,遇到该问题的朋友,请做如下检查: 1.检查,request是不是UTF-8,避免获取的数据是乱码  2.response.setContentTyp......