📅  最后修改于: 2020-10-23 08:08:59             🧑  作者: Mango
CSRF是指对Web应用程序的跨站点伪造攻击。 CSRF攻击是系统的经过身份验证的用户执行的未经授权的活动。因此,许多Web应用程序都容易受到这些攻击。
Laravel通过以下方式提供CSRF保护-
Laravel包含一个内置的CSRF插件,该插件为每个活动的用户会话生成令牌。这些令牌验证操作或请求是否由有关的经过身份验证的用户发送。
本节将详细讨论Laravel中CSRF保护的实现。在进一步进行CSRF保护之前,需要注意以下几点-
CSRF在Web应用程序内部声明的HTML表单中实现。您必须在表单中包含一个经过验证的隐藏的CSRF令牌,以便Laravel的CSRF保护中间件可以验证请求。语法如下所示-
您可以使用JavaScript HTTP库方便地构建JavaScript驱动的应用程序,因为它包括每个外发请求的CSRF令牌。
该文件即resources / assets / js / bootstrap.js注册了Laravel应用程序的所有令牌,并包含元标记,该标记使用Axios HTTP库存储csrf-token 。
考虑下面的代码行。它们显示了一个采用两个参数作为输入的表单: email和message 。
以上代码的结果是最终用户可以在下面显示的表单-
上面显示的表格将接受来自授权用户的任何输入信息。这可能会使Web应用程序易于受到各种攻击。
请注意,提交按钮包括控制器部分中的功能。 postContact函数在该关联视图的控制器中使用。它显示如下-
public function postContact(Request $request) {
return $request-> all();
}
请注意,该表单不包含任何CSRF令牌,因此作为输入参数共享的敏感信息容易受到各种攻击。
以下代码行向您展示了使用CSRF令牌重新设计的表单-
实现的输出将返回带有令牌的JSON,如下所示-
{
"token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
"name": "TutorialsPoint",
"email": " "
}
这是单击提交按钮时创建的CSRF令牌。