2014-04-21 110 views
2

在yii2中,用戶表的表結構不包括salt列。鹽不存儲在數據庫中yii2

$this->createTable('tbl_user', [ 
     'id' => Schema::TYPE_PK, 
     'username' => Schema::TYPE_STRING . ' NOT NULL', 
     'auth_key' => Schema::TYPE_STRING . '(32) NOT NULL', 
     'password_hash' => Schema::TYPE_STRING . ' NOT NULL', 
     'password_reset_token' => Schema::TYPE_STRING . '(32)', 
     'email' => Schema::TYPE_STRING . ' NOT NULL', 
     'role' => Schema::TYPE_SMALLINT . ' NOT NULL DEFAULT 10', 

     'status' => Schema::TYPE_SMALLINT . ' NOT NULL DEFAULT 10', 
     'create_time' => Schema::TYPE_INTEGER.' NOT NULL', 
     'update_time' => Schema::TYPE_INTEGER.' NOT NULL', 
    ], $tableOptions); 

這真的讓我感到困惑。儘管Yii使用了一個salted hash,但它並沒有默認存儲在數據庫中。我是否應該重寫代碼以使其存儲在數據庫中?如果我不在數據庫中醃製鹽,該怎麼辦?

回答

1

這個salt用於Yii2 Security helper不需要存儲在db中,它只用於創建密碼散列,而不需要將密碼與散列進行比較。所以它非常安全。

+0

因此,爲什麼人們在密碼散列旁邊的db中存儲salt? –

+0

另外,當我從loginForm發回數據時,我會以明文形式獲取它。它不安全嗎? –

+1

儲存鹽是一種老派的方法。你可以檢查PHP函數http://www.php.net/manual/en/function.crypt.php http://www.php.net/manual/en/function.password-hash.php – Alex