Yii:防止敏感数据通过关系加载

时间:2014-05-27 07:55:37

标签: database security yii relationship

例如,我有一个名为 Entity 的模型和一个名为 User 的模型。每个实体 BELONGS_TO 单个用户。建立关系的完美案例。

仍然用户包含一些敏感数据,如密码。在请求带有用户的实体时,如何防止加载这些数据?

P.S。我理解设计分离身份验证数据和公开数据的数据库模式会更好。例如。在用户模型中存储密码,在配置文件模型中存储用户名。我的问题仍然是如何在现有案例中保持安全。

1 个答案:

答案 0 :(得分:2)

我认为可以使用这样的东西:

public function relations()
{

    return array(
            'user' =>  array(self::BELONGS_TO,'User','id_field','select'=>'name,surname,otherfield1,field2'),
    );
}

<强>更新

如果您想要限制用户模型中的字段,可以尝试使用defaultScope结合使用scenarios来确定何时可以选择所有字段。

public function defaultScope()
{
    if ( $this->scenario != 'yourScenario' ) {
      return array(
          'select'=>"name,surname,otherfield1,field2",
      );
    } else {
      return array();
    }      
}
相关问题