首页 >php框架 >Laravel >Laravel - CSRF 保护

Laravel - CSRF 保护

王林
王林原创
2024-08-27 10:50:53667浏览

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

Laravel 通过以下方式提供 CSRF 保护 -

Laravel 包含一个内置的 CSRF 插件,可为每个活动用户会话生成令牌。这些令牌验证操作或请求是否由相关的经过身份验证的用户发送。

实现

本节详细讨论 Laravel 中 CSRF 保护的实现。在进一步进行 CSRF 保护之前,请注意以下几点 -

  • CSRF 是在 Web 应用程序内声明的 HTML 表单中实现的。您必须在表单中包含隐藏的经过验证的 CSRF 令牌,以便 Laravel 的 CSRF 保护中间件可以验证请求。语法如下所示 -

<form method = "POST" action="/profile">
   {{ csrf_field() }}
   ...
</form>
  • 您可以使用 JavaScript HTTP 库方便地构建 JavaScript 驱动的应用程序,因为这包括每个传出请求的 CSRF 令牌。

  • 文件即resources/assets/js/bootstrap.js注册了所有Laravel 应用程序的令牌,并包含 meta 标签,该标签存储 csrf-tokenAxios HTTP 库

没有 CSRF 令牌的表单

考虑以下代码行。它们显示了一个表单,该表单接受两个参数作为输入:emailmessage.

<form><form><br/>   <label> Email </label><br/>      <input type = "text" name = "email"/><br/>      <br/><br/>   <label> Message </label> <input type="text" name = "message"/><br/>   <input type = ”submit” name = ”submitButton” value = ”submit”><br/></form><!--输入类型=“提交”名称=“提交按钮”值=“提交”--><!--输入类型=“文本”名称=“电子邮件”--></form>

上述代码的结果是最终用户可以查看的如下所示的表单 -

Contact Form

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

请注意,提交按钮包含控制器部分中的功能。 postContact 函数在关联视图的控制器中使用。如下所示 -

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

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

带有 CSRF 令牌的表单

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

<form method = ”post” >
   {{ csrf_field() }}
   <label> Email </label>
   <input type = "text" name = "email"/>
   <br/>
   <label> Message </label>
   <input type = "text" name = "message"/>
   <input type = ”submit” name = ”submitButton” value = ”submit”>
</form>

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

{
   "token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
   "name": "TutorialsPoint",
   "email": "contact@tutorialspoint.com"
}

这是点击提交按钮时创建的 CSRF 令牌。

以上是Laravel - CSRF 保护的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn