[javascript] 密碼散列(非SSL)



2 Answers

你的方法似乎很不安全。 但要解決您的問題...

  1. 與通過SSL發送的方式相同,只是未加密。
  2. 不,MD5還不夠好,即使是通過SSL。 如果你真的擔心安全問題,那麼為什麼你會選擇一個破解算法,這個算法可以在網上使用大量的網絡服務解密 (這一直是這裡討論的一些棘手的問題)。
  3. 即使您在發送密碼之前散列密碼,您也正在執行此CLIENT SIDE。 這意味著你的散列和你的算法被暴露並顯示給每個最終用戶。 因此,做黑客的一口井現在知道你是如何發送密碼的。

最後,如果您想在從客戶端到服務器的傳輸過程中保護您的網站/文本,只需從GoDaddy獲得至少20美元的SSL證書即可。 在存儲到數據庫之前,在服務器端加密密碼。

Question

在非ssl傳輸的情況下,密碼如何從瀏覽器發送到服務器?

我想在發送之前使用bcrypt來哈希密碼+鹽....但似乎沒有JavaScript實現的bcrypt算法...

是MD5,SHA-1夠好嗎?

PS:我的網站不存儲任何用戶的個人信息..我只是希望用戶想要的密碼不被黑客入侵,因為用戶可能會在其他網站使用相同的密碼,包含他/她的個人信息




嗯,

挑戰反應協議將在這里工作。

客戶端獲取登錄頁面
1)開始會話
2)生成會話密鑰
3)發送會話密鑰作為哈希目標
用戶登錄,按提交
1)會話密鑰的JavaScript任務SHA-1 +密碼的SHA-1,將結果寫入密碼字段
2)Javascript子表單
3)服務器將會話密鑰+ SHA-1密碼哈希的SHA-1進行比較

會話密鑰是讓竊聽者重放流的東西。 服務器記得它是什麼。

但是,密碼的SHA1應該使用鹽。 簡單地使用用戶名可能足以防止預製的彩虹表工作。 由於鹽會暴露在這個協議中,你不能完全擊敗彩虹桌。

編輯:回想起來,我沒有說清楚一件事。 我談論的會話ID不是PHP會話ID。 它是存儲在會話變量中的一個額外的ID,並傳遞給表單中的客戶端。 它需要被使用一次認證,並從PHP會話變量中被丟棄。 同樣,一個嗅探器可以在那個點之後劫持會話。

請記住,所有這個問題都是為了保護嗅探器的密碼 。 他自己的網站是完全容易受到任何人誰可以嗅探和劫持一個會議,他知道這一點。

大發脾氣的警告:一個MITM攻擊者可以用別的東西來代替javascript代碼,比如給他一個密碼的副本。 只有SSL可以防止這種攻擊。




根據你在做什麼,你可能會把你的認證卸載到openid。




Related