执行
本节详细讨论 Laravel 中 CSRF 保护的实现。在进一步进行 CSRF 保护之前,请注意以下几点 -
<form method = "POST" action="/profile">
{{ csrf_field() }}
...
</form>
没有 CSRF 令牌的表单
考虑以下代码行。它们显示了一个采用两个参数作为输入的表单:email和message.
<form>
<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>
上述代码的结果是最终用户可以查看的如下形式 -
上面显示的表格将接受授权用户的任何输入信息。这可能会使 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@cainiaoya.com"
}
这是单击提交按钮时创建的 CSRF 令牌。