2016-06-08 67 views
1

我已經通過MD5在我的數據庫中加密了一個密碼字段,並且我在後端加密了它,但是當用戶輸入密碼時,它是明文。使用MD5安全地將密碼從前端發送到後端

是否有安全的方式將密碼從前端傳遞到後端?在這種情況下MD5沒有意義...

注意:我正在使用HTTPS和POST方法。

+3

是的,對於所有資源,HTTPS已足夠。 –

+6

你不應該使用簡單的散列函數來保護你的用戶密碼。你需要使用像PBKDF2,bcrypt,scrypt和Argon2這樣強大的散列方案。一定要使用高成本因子/迭代次數。選擇成本是很常見的,因此一次迭代至少需要100ms。查看更多:[如何安全地哈希密碼?](http://security.stackexchange.com/q/211/45523) –

回答

6

你可以考慮一下下面的步驟來保護密碼:

  1. 使用HTTPS最好用HSTS在運輸過程中保護密碼;

  2. 使用密碼散列(如bcrypt而不是MD5)來保護服務器上的密碼。

    • salt的HASH密碼;
    • 對bcrypt使用高工作因子。

MD5不是散列的最佳方式。 MD5不再被認爲是安全的。

MD5不加密;不要加密密碼,散列他們,加密可以解密,散列不能顛倒。

+0

謝謝湯姆。是的,我說的是傳聞,但我很確定我讀了一些關於MD5被黑客攻擊的東西...所以我寫下來...... Bcrypt,如果不是哈希...... Cheers –

+1

是的,MD5沒有考慮確定了。使用鹽是一種很好的做法。 – Tom

+3

我已經編輯了這個答案大幅增加了一個術語工作因子。否則,它是相同的*內容*。如果您不滿意我的修改,請修改或回滾。 –

5

雖然接受的答案正確描述了你應該如何在服務器端STORE密碼,這個問題實際上是關於如何從客戶端安全傳輸密碼服務器。

我只是想澄清醃製和散列是在服務器端完成。客戶端只需通過安全連接(HTTPS)將明文密碼發送到服務器。

+0

你可以欺騙一下,讓客戶端完成大部分工作,只執行服務器上散列的最後部分。 –

+0

@MaartenBodewes這將如何工作?客戶端無法訪問salt。此外,您希望在服務器端完成散列,因爲它阻止客戶端分發工作。 – MvdD

+0

你可以發送客戶端的鹽。由於bcrypt本質上是連續的,因此分發工作的客戶端是不可能的。但即使這樣做,那麼分配工作的客戶端也不是問題;攻擊者可以分發這項工作,但首先這不是問題。如果需要,你可以在服務器端保留一個胡椒(一個祕密值)。但我必須承認,這些方案並不常見(如果僅僅因爲它會在JavaScript中變得很慢)。 –