在设置页面上,我让用户编辑一些帐户信息,如电子邮件、姓名、密码等。出于偏执,他们可能会想办法偷偷输入额外的 $_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 时没有必要。