1、什么是CSRF攻击
可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,否则就是不安全的,这种不安全也就是CSRF(Cross-site request forgery),中文名称:跨站请求伪造。
laravel 框架中为避免CSRF攻击,为每个 用户session生成一个CSRF token,该token用于验证登录用户和发起请求用户是否为同一个人。
laravel提供了一个全局函数csrf_token来获取该token值,因此只需在视图提交表单中添加如下代码即可在请求中带上token
<input type="hidden" name="token" value="<?php echo csrf_token()?>">
laravel中csrf验证机制默认是开启的。
csrf_token()的简化方法:{ {csrf_field()}} 等价于上面一行代码。csrf_token()输出一个token值,而csrf_field输出了一整个input隐藏域。开发时这两个方法可以根据自己选择,但是在异步提交表单时必须使用csrf_token().
2、关闭csrf验证的方法:
并不是所有路由都需要避免csrf攻击,比如去第三方API获取数据的请求。
可以通过在verifyCsrfToken(app/Http/Middleware/VerifyCsrfToken.php)