为了安全起见,我想从$this->request->data
数组中筛选所有不允许的字段。
例如,我的$this->request->data
看起来像这样:
array(
'User' => array(
'password' => '*****',
'email' => 'asd@asdasd.de'
)
)
我想把这个过滤器应用到上面的数组:
array(
'User' => array(
0 => 'password',
1 => 'email'
)
)
因此,所有不在过滤器数组中的post数据字段都将被取消设置。
我能看到这一点的唯一原因是在您的注册/登录操作中,无效会导致密码以某种方式再次输出。
在那里,你只需要将其设置为空,然后再将其传递到视图:
if ($this->Auth->login()) {
// flash message
return $this->redirect($this->Auth->redirectUrl());
}
$this->request->data['User']['password'] = '';
请参阅https://github.com/dereuromark/cakefest/blob/master/Controller/AccountController.php#L26例如。
只需使用SecurityComponent即可完成。它会自动验证表单是否有效(使用哈希),并防止其他一些攻击。
如果有一个字段被注入到表单中,则安全组件将对请求进行黑洞处理。这本书的这一部分告诉你它是如何工作的。基本上,只要添加组件就可以了。但我真的建议你读一本关于它的书,了解它对防止攻击的作用。