搜索
您的当前位置:首页正文

65. CSRF 保护

来源:二三娱乐

使用 CSRF 保护

  • Laravel 会自动为每个活跃用户的会话生成一个 CSRF「令牌」。该令牌用于验证经过身份验证的用户是否是向应用程序发出请求的用户。

  • 任何情况下当你在应用程序中定义 HTML 表单时,都应该在表单中包含一个隐藏的 CSRF 令牌字段,以便 CSRF 保护中间件可以验证该请求。可以使用辅助函数 csrf_field 来生成令牌字段:

<form method="POST" action="/profile">
    {{ csrf_field() }}
    ...
</form>

包含在 web 中间件组里的 VerifyCsrfToken 中间件会自动验证请求里的令牌是否与存储在会话中令牌匹配。

添加 CSRF 白名单

  • 把这类路由放到 routes/web.php 外,因为 RouteServiceProvider 的 web 中间件适用于该文件中的所有路由。

  • 将这类 URI 添加到 VerifyCsrfToken 中间件中的 $except 属性来排除对这类路由的 CSRF 保护:

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * 这些 URI 将免受 CSRF 验证
     *
     * @var array
     */
    protected $except = [
        'stripe/*',
    ];
}
Top