保护外键对雄辩模型的优势

时间:2017-10-20 15:57:41

标签: php laravel security laravel-5 eloquent

我有一个名为users的表。该表在另一个名为projects的表中有一个名为project_id的外键。我页面上的用户将看到包含所有项目的下拉列表,并且可以选择其中一个项目。然后,我将使用所选项目的主键作为新创建用户的外键。

现在,在laravel的雄辩模型中,我已经读过外键应该始终受到保护(无法进行大规模分配)以确保安全性。我真的不明白为什么会这样。假设我验证了project_id存在于项目表中,我是否应该确信该值是有效的,现在可以批量分配给用户模型?还有其他原因我不知道为什么人们说外键应该总是被保护?

1 个答案:

答案 0 :(得分:1)

外键应该作为最佳做法加以保护,但是如果你绝对确定你正在清理你的输入,那么你没有理由不应该使用project_id

在其他情况下,应该真正保留防护功能 - 例如,您的用户表格中有一个is_paid_member字段,表示用户已支付真钱以解锁您网站上的某些功能。假设您没有保护该字段,用户转到他的个人资料页面,通过添加<input type="hidden" name="is_paid_member" value="1">字段来操作表单,并提交表单。

如果您在保存个人资料详细信息时进行大规模更新 - 例如$user->update($request->input()),那么用户就可以免费获得付费帐户。