Laravel CSRF保护

csrf指的是跨网站伪造攻击网络应用程序。csrf攻击是系统的经过身份验证的用户执行的未经授权的活动。因此,许多web应用程序都容易受到这些攻击。

laravel以下列方式提供csrf保护 -

laravel包含一个内置的csrf插件,可为每个活动用户会话生成令牌。这些令牌会验证操作或请求是否由有关的已验证用户发送。

 

履行

本节详细讨论了在laravel中实施csrf保护。在继续进行csrf保护之前,以下几点值得注意 -

  • csrf在web应用程序中声明的html表单中实现。您必须在表单中包含隐藏的经过验证的csrf令牌,以便laravel的csrf保护中间件可以验证请求。语法如下所示 -
    {{ csrf_field() }}
   ... 
  • 您可以使用javascript http库方便地构建javascript驱动的应用程序,因为这包括csrf令牌给每个传出的请求。

  • 文件 resources / assets / js / bootstrap.js 注册了laravel应用程序的所有标记,并包含 meta 标记,它存储了带有 axios http库的 csrf标记 。 **

没有csrf令牌的表单

考虑以下几行代码。他们展示了一个表单,它以两个参数作为输入: 电子邮件 和 消息 。

     email               

    message        

上面显示的表格将接受来自授权用户的任何输入信息。这可能会使web应用程序容易受到各种攻击。

请注意,提交按钮包含控制器部分的功能。所述 后接触 功能在控制器为该关联视图使用。如下所示 -

public function postcontact(request $request){
   return $request-> all();
}

请注意,表单不包含任何csrf令牌,因此作为输入参数共享的敏感信息容易受到各种攻击。

带有csrf令牌的表单

以下几行代码向您展示了使用csrf令牌重新设计的表单 -

    {{ csrf_field() }}
    email         

    message           

实现的输出将返回带有如下所示令牌的json -

{
   "token": "ghfleifxdsuyew9we67877cxnvfjkl",
   "name": "codingdict",
   "email": "contact@codingdict.com"
}

这是单击“提交”按钮时创建的csrf标记。

相关文章