2016-10-17 34 views
2

A) SELECT id,username FROM users WHERE username =? AND password_hash =?什麼比較好? query(sql)或hash_equals

B)hash_equals($password_hash_real, $password_hash_user)

很顯然,我看看有沒有選擇,看看密碼是正確的行。

哪個更安全?

+4

'password_hash()'和'password_verify()'是要走的路,在那裏毫無疑問。 –

+1

您必須從數據庫中獲取散列,以便將原始鹽的密碼重新哈希,因此您不妨只選擇'id,username,hash where username =?',然後將php中的哈希與password_verify()。 –

+0

太棒了,我使用password_hash和password_verify更改了我的代碼。謝謝。 – Lucas

回答

0

檢查密碼匹配不是數據庫的工作。此外,你可能想知道用戶是否存在,儘管哈希不是好的。所以我會在PHP腳本中完成它。

hash_equals()並不意味着使用散列驗證密碼。使用password_hash()password_verify(),因爲它們爲你添加鹽和一切。

+0

這是正確的,但@Franz解決了查詢。我應該將這個答案標記爲正確的? – Lucas

+0

@Lucas總是很好地標記答案是正確的,並分享代表。現在你的問題仍然沒有解決 – Cyril