CSRF保护--laravel进阶篇

        laravel对csrf非常重视,专门针对csrf作出了很多的保护。如果您是刚刚接触laravel的路由不久,那么您可能对于web.php路由文件的post请求很疑惑,因为get请求很顺利,而post请求则可能会遭遇失败。其中一个失败的原因是由于laravel的csrf保护引起的。

        根据laravel官方解释,web.php下的路由对于POSTPUTPATCH 或 DELETE 请求都默认采取csrf保护。

        在web.php下,csrf保护只是对普通form表单提交、apipost等才有的,而使用axios,inertia的form则不受csrf保护影响。

        我这里给出3种情况的解决方案

        一、让路由不接受CSRF检查。

        二、使用Apipost等工具访问路由时检查CSRF

        编写取出token的路由

        用GET请求token并打印出来

        最后在post请求种带上token就可以顺利访问post请求了

        三、在blade模板中发起post请求检查CSRF

        先创建2个路由,get路由负责创建blade模板,post路由就是最终的post请求

        blade模板如下

        在浏览器中展示blade模板

        点击Submit按钮后展示

        四、发起PUT/PATCH请求需要添加X-CSRF-TOKEN头,值和_token值一样即可,body可不用带_token参数

        api.php下的路由默认是不采取CSRF检查

        展示get请求

        展示post请求

        如果在api.php下想启用CSRF检查呢?其中一种方式可以采用单页面应用认证

        创建路由

        配置域基于 Laravel 会话 cookie 的“有状态”认证。

        我这里配置为testlaravel.com域,大家根据各自情况配置各自的域。

        指导 Laravel 来自您的 SPA 的传入请求可以使用 Laravel 的会话 cookie 进行认证

        一旦配置$middleware->statefulApi();,不仅仅是想启用CSRF检查的路由会执行CSRF检查,api.php下面的所有路由对于来自SPA的post请求都会进行CSRF检查。而如果使用Apipost等工具进行post请求还是不会进行CSRF检查

        在Dashboard.vue下编写axios请求

        在浏览器中测试前需要先行登录

        核对请求地址

        核对请求参数

        查看响应结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值