在設置頁面上,我讓用戶編輯一些帳戶信息,如電子郵件,姓名,密碼等。出於偏執,他們可能會想出一種方法來偷偷追加$ _post數據來改變他們的角色或污染他們的文檔,不必要的添加字段,我使用$ _post數據上的array_interest_keys來對付允許字段的白名單。白名單字段名稱可防止惡意數據操作?
protected $user_settings_fields = array(
'email' => '',
'password' => '',
'name' => '',
);
public function edit_settings(array $data)
{
$data = array_intersect_key($data, $this->user_settings_fields);
// Do stuff like check $data['_id'] against auth_user['_id']
// to make make sure the user is updating their own document.
// Perform update
}
這是好的,常見的做法還是矯枉過正?即使有一位好友告訴我在使用MongoDB時沒有必要,我已經採取了其他預防措施,如轉換表單輸出數據。