laravel报错:TokenMismatchException in VerifyCsrfToken.php line 68:

laravel报错:TokenMismatchException in VerifyCsrfToken.php line 68:laravel报错:TokenMismatchException in VerifyCsrfToken.php line 68:

大家好,又见面了,我是你们的朋友全栈君。

csrf防护:

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

csrf详解

解决方式:
(1)csrf防护只有在web.php文件中有效。如果你只是添加路由,可以新建一个路由文件。
(2)找到php/Http/Middleware/VerifyCsrfToken.php例子如下:

class VerifyCsrfToken extends BaseVerifier
{ 
   
    /** * The URIs that should be excluded from CSRF verification. * CSRF【Cross-site request forgery跨站请求伪造】验证时,应排除的URI地址块,形如:'test/login'、'test/*' * @var array */
    protected $except = [
        'test/*',
    ];
}

(3)在post方式提交表单的时候,加上laravel自带的全局帮助函数csrf_token。

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

(4)如果进行ajax的post请求的时候并没有提交form,表单,此时我们可以通过在meta中写入一些属性来金星csrf防护。

<head>
    <title>Laravel</title>
    <meta name="csrf-token" content="{ 
   { csrf_token() }}">

</head>

 $.ajax({ 
   
        headers: { 
   
          'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        url: "{ 
   {url('/')}}",
        type: "post",
        dataType: "json",
 });

(5)解除csrf防护
找到php/Http/Middleware/VerifyCsrfToken.php例子如下:

public function handle($request, Closure $next)
  {
    // 使用CSRF
    return parent::handle($request, $next);
    // 禁用CSRF
    //return $next($request);
  }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105888.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月24日 下午3:00
下一篇 2022年4月24日 下午3:00


相关推荐

  • 在Android Studio中修改maven私库的地址[通俗易懂]

    在Android Studio中修改maven私库的地址[通俗易懂]在.gradle目录中,修改init.gradle文件,修改其中的maven地址。在.m2目录中,修改settings.xml文件,修改其中的maven地址。以下是init.gradle文件:allprojects{repositories{defREPOSITORY_URL=‘http://192.168.1.XX:XXXX/nexus/content/gro…

    2022年7月18日
    33
  • JVM进阶(十一):JAVA G1收集器

    JVM进阶(十一):JAVA G1收集器JVM进阶(十一)——JAVAG1收集器  在前两篇博文中讲解了新生代和年老代的收集器,在本篇博文中介绍一个收集范围涵盖整个堆的收集器——G1收集器。先讲讲G1收集器的特点,他也是个多线程的收集器,能够充分利用多个CPU进行工作,收集方式也与CMS收集器类似,因此不会有太久的停顿。  虽然回收的范围是整个堆,但还是有分代回收的回收方式。在年轻代依然采用复制算法;年老代也同样采用“标记-清除

    2022年6月13日
    28
  • Python3.7模块之hashlib

    Python3.7模块之hashlibupdate()不支持将字符串对象引入,因为哈希在字节上工作,而不在字符上工作。所以update后面的括号里只能是字节(bytes)形式importhashlibmd=hashlib.md5()md.update(“你好”)md=md.hexdigest()print(md)出现以下错误:D:\PycharmProjects\untitled\venv\Scripts\pyt…

    2022年6月8日
    43
  • Java安全之Weblogic 2016-3510 分析

    Java安全之Weblogic2016-3510分析首发安全客:Java安全之Weblogic2016-3510分析0x00前言续前面两篇文章的T3漏洞分析文章,继续来分析CVE-20

    2021年12月12日
    48
  • ossim5.0安装

    ossim5.0安装1 下载镜像文件下载最新的 OSSIM 版本 http downloads alienvault com c download version current ossim iso2 虚机配置为 OSSIM 环境创建虚机时 将安装光盘镜像文件的路径设置为下载好的镜像文件即可 启动虚拟机 3 启动虚拟机 nbsp OSSIM 配置创建虚机的过程中 OSSIM 的配置流程如下

    2026年3月16日
    1
  • role &#39;PLUSTRACE&#39; does not exist

    role &#39;PLUSTRACE&#39; does not exist

    2022年1月10日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号