$this->Session->read('Auth.User.field') 在 cakePHP 2.


Is $this->Session->read('Auth.User.field') secure in cakePHP 2.3?

我已经使用 cakePHP 2.3 一段时间了,我看到很多人使用 $this->Session->read('Auth.User.id') ,尤其是在视图中。然而,我想知道这有多安全。您是否不应该在应用程序控制器中创建类似的东西

   function beforeRender() {
    if(!empty($this->Auth->user())) {
        $this->set('authUser',$this->Auth->user());
    }
   }

检查视图中的用户?我在手册或其他地方找不到任何关于这一点的澄清。会话是否足够安全,值得信赖?

好吧,根据身份验证的类型,AuthComponent::user()(顺便说一句,它是 Cake 2.x 中的静态方法)无论如何都会从会话中读取值(以防静态用户缓存为空)。因此,如果用户能够修改保存 ID 的会话值,这两种方法都将受到损害。

尽管如此,您最好将值从控制器传递给视图,视图不知道在Auth组件上定义的正确键,而且Auth组件实现可能会更改,导致视图根本无法访问这样的值。