Laravel 批量注入的安全处理,通过模型的 fillable 和 guarded 解决

这篇博客讨论了Laravel批量赋值带来的安全问题,即批量注入。通过示例展示了用户如何利用此特性冒充他人发布。Laravel提供了fillable(白名单)和guarded(黑名单)属性来解决这个问题,用于控制模型允许自动填充的字段。文章建议使用这两个属性确保数据安全性,并提供了解决创建模型时敏感数据被过滤的处理方法。
摘要由CSDN通过智能技术生成

Laravel 为了方便数据进行批量操作,提供了批量赋值机制。假如要在数据表中插入一条记录,我们可以使用模型做如下操作:

$article = Article:create($request->all());

这样我们直接将表单提交过来的数据直接写入了数据库(很方便),但是这样做非常不安全。对于用户输入的数据,我们应该永远谨慎对待。假如我们的 articles 表里有一个字段 user_id,是用来标记发布者的,按照以上的写法,用户可以伪造成任何人发布内部。只需要模拟表单提交并设定 user_id 字段即可。这个问题就是我们所讲的 批量注入 的安全问题。

那么如何解决批量注入的安全问题?

Laravel 中的模型提供了 fillable 和 guarded,是专门用来解决批量注入的问题,二者是互斥关系,存在一个就好,如果同时存在,fillable 的优先级更高。

fillable 变量存储允许自动填充的模型字段,可以理解为字段白名单,比如:

protected  $fillable = ['title', 'body', 'category_id'];

guarded 变量存储不允许自动填充的模型字段,可以理解为黑名单,比如:

protected  $guarded=['user_id'];

有时,我们希望通过 Article::create($data) 的方式存储表单数据,我们会在 $data 在存放一些敏感数据,但是一些敏感数据,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值