Laravel 可以轻松保护您的应用程序免受跨站请求伪造 (CSRF) 攻击。跨站点请求伪造是一种恶意利用,代表经过身份验证的用户执行未经授权的命令。
Laravel 自动为应用程序管理的每个活动用户会话生成一个 CSRF“令牌”。此令牌用于验证经过身份验证的用户是实际向应用程序发出请求的用户。
每当您在应用程序中定义 HTML 表单时,您应该在表单中包含一个隐藏的 CSRF 令牌字段,以便 CSRF 保护中间件可以验证请求。您可以使用 csrf_field 帮助器来生成令牌字段:
<form method="POST" action="/profile">
{{ csrf_field() }}
...
</form>
除了检查 CSRF 令牌作为 POST 参数外,VerifyCsrfToken 中间件还将检查 X-CSRF-TOKEN 请求标头。例如,您可以将令牌存储在 HTML 元标记中:
<meta name="csrf-token" content="{{ csrf_token() }}">
然后,一旦您创建了元标记,您就可以指示 jQuery 之类的库自动将标记添加到所有请求标头中。这为基于 AJAX 的应用程序提供了简单、方便的 CSRF 保护:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
Reference
注意:要从 CSRF 验证中排除某些 URI,请转到 project/app/Http/Middleware,打开文件 VerifyCsrfToken.php 并传递您的 url,例如:
protected $except = [
'/api/authuser',
];
在此数组中传递的 url 从 URI 中排除在 CSRF 验证之外。