2017-10-20 49 views
1

我有一個表,稱爲用戶。該表在名爲projects的另一個表中有一個名爲project_id的外鍵。我的頁面上的用戶將看到一個包含所有項目的下拉列表,並且可以選擇其中的一個。然後,我將使用所選項目的主鍵作爲新創建用戶的外鍵。保守的外鍵在雄辯的模型上的優點

現在在laravel的雄辯模型中,我已經讀到爲了安全起見外鍵總是應該被守護(不能是大規模賦值的)。我不明白這是爲什麼。假設我驗證了project_id存在於項目表中,我不應該確信該值是有效的,現在可以將其批量分配給用戶模型?是否有其他原因我錯過了爲什麼人們說外鍵應該始終被守護?

回答

1

外鍵應該作爲最佳實踐來守護,但是如果您確信自己正在清理您的輸入內容,那麼您沒有理由不爲project_id疏忽。

還有其他一些情況下,應該保持警惕 - 例如,您的用戶表中有一個is_paid_member字段,表示用戶已付出實際費用來解鎖您網站上的某些功能。假設您沒有保護該字段,並且用戶轉到他的個人資料頁面,通過添加<input type="hidden" name="is_paid_member" value="1">字段來操縱表單,然後提交表單。

如果您在保存個人資料詳情時進行大量更新 - 例如$user->update($request->input()),那麼用戶只需要免費獲得付費帳戶。