Laravel 下的伪造跨站请求保护 CSRF
简介
Laravel 提供了简单的方法使你的应用免受 跨站请求伪造 (CSRF) 的袭击。跨站请求伪造是一种恶意的攻击,它凭借已通过身份验证的用户身份来运行未经过授权的命令。
Laravel 为每个活跃用户的 Session 自动生成一个 CSRF 令牌。该令牌用来核实应用接收到的请求是通过身份验证的用户出于本意发送的。
任何情况下在你的应用程序中定义 HTML 表单时都应该包含 CSRF 令牌隐藏域,这样 CSRF 保护中间件才可以验证请求。辅助函数 csrf_field
可以用来生成令牌字段:
<form method="POST" action="/profile">
{{ csrf_field() }}
...
</form>
包含在 web
中间件组里的 VerifyCsrfToken
中间件会自动验证请求里的令牌 token
与 Session 中存储的令牌 token
是否匹配。
CRSF 令牌和 Vue
如果你使用 Vue.js 框架,没有 make:auth
命令提供的身份验证过渡,那么你需要在你应用的主要布局中手动定义一个 Laravel
Javascript对象。这个对象会指定 Vue 在做请求时需要的 CSRF 令牌:
<script>
window.Laravel = {!! json_encode([
'csrfToken' => csrf_token(),
]) !!};
</script>