-1
這是我第一次在我的應用程序中使用PHP本地密碼功能。我使用以下代碼存儲用戶密碼:password_verify()或比較哈希用戶輸入與PHP中存儲的密碼?
password_hash($this->input->post('password'),PASSWORD_BCRYPT);
並將結果存儲在數據庫中。現在我想在登錄過程中驗證用戶。
我的問題是在這裏。我有2種選擇:
方法1種
$sql = "SELECT id,password FROM tbl_members WHERE email = ? LIMIT 1";
$result = $this->db->query($sql,array('[email protected]'));
if ($result->num_rows()) {
$row = $result->row();
$hash = $row->password;
if (password_verify($this->input->post('password'), $hash)) echo 'Successful login';
}
方法2
$hash = password_hash($this->input->post('password'),PASSWORD_BCRYPT);
$sql = "SELECT id FROM tbl_members WHERE email = ? AND password = ? LIMIT 1";
$result = $this->db->query($sql,array('[email protected]',$user_hashed_password));
if ($result->num_rows()) echo 'Successful Login';
哪種方法更適合於一個登錄過程?
其中一個很容易受到定時攻擊,另一個不是。 API提供是有原因的。用它。 – PeeHaa
@PeeHaa其實......一個*作品*,另一個不... – deceze
password_hash對我來說更安全, – Beginner