W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在建立一個(gè)新的模型時(shí),您把屬性以數(shù)組的方式傳入模型的構(gòu)造方法,這些屬性值會(huì)經(jīng)由批量賦值存成模型數(shù)據(jù)。這一點(diǎn)非常方便,然而,若盲目地將用戶輸入存到模型時(shí),可能會(huì)造成嚴(yán)重的安全隱患。如果盲目的存入用戶輸入,用戶可以隨意的修改任何以及所有模型的屬性。基于這個(gè)理由,所有的 Eloquent 模型默認(rèn)會(huì)阻止批量賦值 。
我們以在模型里設(shè)定 fillable
或 guarded
屬性作為開(kāi)始。
fillable
屬性指定了哪些字段支持批量賦值 ??梢栽O(shè)定在類的屬性里或是實(shí)例化后設(shè)定。
class User extends Model {
protected $fillable = ['first_name', 'last_name', 'email'];
}
在上面的例子里,只有三個(gè)屬性允許批量賦值。
guarded
與 fillable
相反,是作為「黑名單」而不是「白名單」:
class User extends Model {
protected $guarded = ['id', 'password'];
}
注意: 使用 guarded 時(shí), Input::get() 或任何用戶可以控制的未過(guò)濾數(shù)據(jù),永遠(yuǎn)不應(yīng)該傳入 save 或 update 方法,因?yàn)闆](méi)有在「黑名單」內(nèi)的字段可能被更新。
上面的例子中, id 和 password 屬性不會(huì)被批量賦值,而所有其他的屬性則允許批量賦值。您也可以使用 guard
屬性阻止所有屬性被批量賦值:
protected $guarded = ['*'];
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: