Laravel 可以轻松使地保护你的应用程序免受 跨站请求伪造(CSRF)攻击。 跨站点请求伪造是一种恶意攻击,它凭借已通过身份验证的用户身份来运行未经过授权的命令。

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

无论何时,当您在应用程序中定义 HTML 表单时,都应该在表单中包含一个隐藏的 CSRF 标记字段,以便 CSRF 保护中间件可以验证该请求,你可以使用 @csrf Blade 指令来生成令牌字段,如下:

  1. <form method="POST" action="/profile">
  2. @csrf
  3. ...
  4. </form>

注 : 表单令牌为强制,如果不设置表单令牌,则提交请求后返回419错误

白名单

有时候你可能希望设置一组不需要的 CSRF 保护的 URL 。你可以通过将这类 URL 添加到 VerifyCsrfToken 中间件的 $except 属性来排除对这类路由的 CSRF 保护,如下所示:

  1. <?php
  2. namespace App\Http\Middleware;
  3. use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
  4. class VerifyCsrfToken extends Middleware
  5. {
  6. /**
  7. * 从 CSRF 验证中排除的 URI
  8. *
  9. * @var array
  10. */
  11. protected $except = [
  12. 'stripe/*',
  13. 'http://example.com/foo/bar',
  14. 'http://example.com/foo/*',
  15. ];
  16. }