Laravel忽略白名單和黑名單

lyxxxh發表於2020-07-24

區別

$fillable 白名單: 允許插入欄位 預設為: []
$guarded 黑名單: 不允許插入欄位 預設為: ['*'] //所有欄位設定為黑名單 罪魁禍首

程式碼

$request->query->set('user_id', Auth::id());
Comment::create( $request->all());

這我鍾愛的寫法,能少寫一個就不寫兩個程式碼。
當然會插入失敗。

解決1

手動把所有欄位設定加入到 protected $fillable = ['user_id','nickname',....];

不考慮這種寫法,太麻煩了。

解決2

protectd $guarded = [];

這種寫法才爽,因為預設所有欄位都是黑名單,重置下就好了。

解決3

static $unguarded = true;

忽略 名單的驗證。
解決2 一樣舒服。

2和3的問題

要了解為什麼需要 白名單黑名單,再做 2,3 的步驟。

並且能保證使用者傳送不了 破壞 系統的資料。
(比如我這個的user_id,使用者傳送user_id過來也沒用)

本作品採用《CC 協議》,轉載必須註明作者和本文連結

專心學習不瞎搞

相關文章