簡體   English   中英

在使用POST方法發送密碼之前,是否可以使用bcrypt哈希密碼?

[英]Is there any way to hash a password with bcrypt before sending it with POST method?

我想知道是否有辦法使用bcrypt哈希密碼,然后再通過POST方法從登錄名發送到處理頁面,以提高登錄腳本的安全性。 我不能使用SSL保護來這樣做。

不幸的是,即使您按照您的建議進行了操作,也仍然無法建立安全的連接,因此很容易受到中間人攻擊。 如以下注釋中所述,您在客戶端進行的任何哈希處理都將使密碼毫無意義,因為它將要求您通過網絡發送哈希以與另一個哈希服務器端進行比較。 在這種情況下,攻擊者(MitM)可以僅使用哈希進行身份驗證。

如果要進行安全通信,則必須(至少)實施TLS / SSL。

如果使用bcrypt將密碼散列,並給出足夠強的密碼和鹽,則該密碼將是安全的。

如果傳入的哈希與服務器上的哈希不匹配,則可以拒絕訪問。

但是,設計的主要問題是現在不再需要密碼即可訪問系統。 哈希現在成為身份驗證所需的全部內容。 因此,哈希已成為密碼的適當替代。 好吧,您剛剛將未加密的偽密碼公開,未經加密地傳遞給了未經驗證的服務器。

在使用bcrypt或類似方法將密碼存儲在服務器上之前,應對密碼進行哈希處理。 但是,通常應將密碼(通過加密連接以明文形式)傳遞到服務器並在其中進行哈希處理,以便您可以確保客戶端實際上知道密碼。

您可能會考慮使用Digest身份驗證代替該方法,而不是SSL,但這是可行的,因為對服務器的每次調用都需要重新進行身份驗證。 如果您使用任何基於令牌的會話,則可以重播和MitM攻擊,因此必須對其進行加密。 此外,摘要式身份驗證有點陳舊,並且沒有TLS那樣的加密安全性,並且沒有服務器身份驗證,因此我們仍然以HTTPS(SSL / TLS)告終。

HTTPS(SSL / TLS)提供服務器標識驗證,並提供完整的端到端加密,這是您應該使用的加密方法。 您可以模仿SSL提供的所有保護,但是似乎很多工作都在試圖做一些已經存在並且很容易實現的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM