Laravel9的CSRF 保护机制

1、CSRF攻击的介绍

跨站请求伪造攻击,跨站点请求伪造是一种恶意利用,利用这种手段,代表经过身份验证的用户执行未经授权的命令。

2、如何避免CSRF攻击

Laravel 有一套避免CSRF攻击的机制,可以轻松保护您的应用程序免受跨站点请求伪造(CSRF)攻击。

现在我们来做一个用户表单提交请求:

在路由文件web.php中添加

//CSRF
Route::any('test-csrf',[UserController::class,'testCsrf']);

在控制器UserController.php中添加

  public function testCsrf()
    {
        return View('test');
}

在视图test.blade.php中添加:

   
  • 姓名:
  • 年龄:

启动服务:php artisan serve

用浏览器打开http://127.0.0.1:8000/test-csrf

点击提交按钮,发现:

这是因为Laravel 为应用程序管理的每个活动 用户会话 自动生成 CSRF 「令牌」。此令牌用于验证经过身份验证的用户是实际向应用程序发出请求的人。由于此令牌存储在用户的会话中,并且每次重新生成会话时都会更改,所以需要在表单中添加 @csrf

查看浏览器的源码,我们发现laravel9框架已为表单增加了令牌,这个时候表单是可以正常提交的

当然,如果你可能希望从 CSRF 保护中排除一组 URI。可以在中间件VerifyCsrfToken.php中添加白名单

如果你觉得在每个表单中添加@ csrf麻烦,也可以在meta标签中添加:

这是因为除了检查 CSRF 令牌作为 POST 参数外,App\Http\Middleware\VerifyCsrfToken 中间件还将检查 X-CSRF-TOKEN 请求标头


这一节介绍到这里了,下一节见。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章