CakePHP操作后字段过滤器



为了安全起见,我想从$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即可完成。它会自动验证表单是否有效(使用哈希),并防止其他一些攻击。

如果有一个字段被注入到表单中,则安全组件将对请求进行黑洞处理。这本书的这一部分告诉你它是如何工作的。基本上,只要添加组件就可以了。但我真的建议你读一本关于它的书,了解它对防止攻击的作用。