【问题标题】:csrf token mismatch during curl form submission in laravel5在laravel5中提交curl表单期间csrf令牌不匹配
【发布时间】:2015-04-29 18:04:06
【问题描述】:

我正在尝试使用 curl post 方法提交表单。我已将 csrf 令牌正确设置为表单。但它在 VerifyCsrfToken.php 第 46 行显示 TokenMismatchException:。我卡在上面并在网上搜索。但没有'没有得到任何解决方案。

【问题讨论】:

  • 您需要在 curl 表单提交中包含您的 csrf 令牌 - 或者您需要在该路由上禁用 csrf 保护...

标签: curl laravel-5 csrf-protection


【解决方案1】:

CSRF 现在是在 Laravel 5 的 App\Http\Kernel.php 中全局注册的“中间件”。删除它将默认没有 CSRF 保护(Laravel4 行为)。 注释掉或删除 Kernel.php 中的这一行

之前:

protected $middleware = [
    'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
    'Illuminate\Cookie\Middleware\EncryptCookies',
    'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
    'Illuminate\Session\Middleware\StartSession',
    'Illuminate\View\Middleware\ShareErrorsFromSession',
    'App\Http\Middleware\VerifyCsrfToken',
];

之后:

protected $middleware = [
    'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
    'Illuminate\Cookie\Middleware\EncryptCookies',
    'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
    'Illuminate\Session\Middleware\StartSession',
    'Illuminate\View\Middleware\ShareErrorsFromSession',
    // 'App\Http\Middleware\VerifyCsrfToken',
];

【讨论】:

  • 在不提及采用这种方法所固有的安全风险的情况下推荐这种方法是很危险的。 CSRF 保护的存在是有原因的,禁用它的人应该了解这样做的危险,或者至少被告知这样做存在一些危险。
【解决方案2】:

您的表单应如下所示

@extends('layout.main')
@section('content')
<form  action="{{URL::route('give-the-route')}}"   method="post">
<input type="text" name="name" placeholder=" Title">
<textarea name="description" cols="45" rows="5"placeholder="Brief Description "></textarea>
<input name="_token" type="hidden" value="{{csrf_token()}}">
<input type="submit" value="Publish"><br>

</form>

@stop

我的意思是不要忘记写下一行

<input name="_token" type="hidden" value="{{csrf_token()}}">

【讨论】:

    【解决方案3】:
    @extends('layout.main')
    @section('content')
    <form  action="{{URL::route('give-the-route')}}"   method="post">
        <input type="text" name="name" placeholder=" Title">
        <textarea name="description" cols="45" rows="5"placeholder="Brief Description "></textarea>
    
        <!-- dont forgot to use this -->
        <input name="_token" type="hidden" value="{{csrf_token()}}">
    
        <input type="submit" value="Publish">
    </form>
    @stop
    

    【讨论】:

      猜你喜欢
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 2018-05-11
      • 2014-11-16
      • 2016-09-11
      • 2019-01-15
      • 1970-01-01
      相关资源
      最近更新 更多