2011-06-11 29 views
4

我正在構建一個需要註冊和登錄的網站。 由於我是新手開發Web,我想如果發送未加密的密碼到服務器是一個選項。 或者,你會收拾我,因爲我對密碼學一無所知?是否發送未加密的密碼是一個很好的實踐?

編輯:http://pastebin.com/nYcazcZq

+0

發送哪裏使用什麼?你能舉一個你正在做什麼的具體例子嗎? – 2011-06-11 08:55:00

+0

這是我寫的代碼。您如何看到密碼在數據庫中被加密,但在客戶端和服務器之間沒有連接。我需要購買SSL證書嗎?如何和多少成本? – pythonFoo 2011-06-11 09:31:20

+0

如果登錄已完成,我會在服務器和會話中存儲的信息之間進行檢查:它是否真的可以提高安全性? – pythonFoo 2011-06-11 09:33:39

回答

0

這是從來沒有好發送未加密的密碼。對於嚴重的網站,您應該使用https加密瀏覽器和服務器之間的流量。您通過購買安裝在Web服務器上的證書來實現這一點。

2

如果您的網站僅用於測試或在Intranet內部使用,那不是什麼大問題。

如果不是,我強烈建議您使用SSL。

如果您不能負擔證書,至少可以讓你的用戶可以選擇:使用OpenID

  • 登錄(因爲大多數的OpenID提供商提供認證SSL);
  • 使用摘要式身份驗證(它不會通過網絡明確發送密碼)進行登錄。
2

如果您的意思是從瀏覽器發送到您的服務器,那麼您需要使用https/ssl來加密連接,而不是密碼本身。另一方面,如果你正在談論存儲密碼明文,那麼是的,那也不好。您應該使用強鹽(每個用戶最好)和慢速算法對其進行哈希處理。

這個答案將進入更詳細的關於通過SSL發送密碼:Sending passwords over the web

您可以使用PHP的地穴哈希計算:http://php.net/manual/en/function.crypt.php

0

從不發送淨原始關鍵數據,使用SSL是最好的解決辦法,我認爲,也可以使用javascript加密器來加密客戶端的密碼並在服務器中解密,

1

請記住,即使您的服務沒有任何有價值的有效載荷,也可以保證許多用戶將使用與som使用的密碼相同更有價值,這意味着在您的一端違規或容易被攔截的密碼可能會造成傷害。即使這對用戶來說是不好的做法,但這是生活中不可避免的事實,所以實際上沒有任何情況下,公衆可以訪問的服務對用戶憑證負責。請使用SSL/https或OpenID(或其他外部託管的登錄管理方案,即使是Facebook:how to use facebook for user login on my website?),如果您是密碼保持者,請不要將它們作爲純文本保存在數據庫中。

相關問題