2011-11-26 47 views
0

我正在考慮從登錄頁面傳輸登錄名和密碼時增加安全性。 我在互聯網上發現了一個javascript md5函數,所以發送密碼的第一種方法是使用POST方法發送md5散列代替密碼。 據我所知,仍然有很多問題,該方法應該改進。 未存儲數據庫中的密碼,只存儲md5散列(其他函數也用於使其複雜化)。 但是,我的問題是:從託管服務提供商更喜歡ssl加密是否有意義或更好?它每年花費大約100美元(假設對於我的問題來說價格很合理),而不是重新發明輪子。 ssl的負值(如果我沒有錯的話)是:如果登錄部分位於主頁面上,主頁面將加載速度較慢(儘管雅虎登錄頁面使用https加載的速度相當快),並且任何用戶都將在瀏覽器中看到https字符串(這不是壞事,但它是好?)安全登錄頁面:javascript md5函數vs SSL,如果登錄塊位於主頁面

是怎樣的主意,用(無SSL): 1)wher中,MD5用戶登錄(密碼)發送的,而不是他的真實密碼 2)服務器接收md5(密碼),使其成爲md5(md5(密碼)+'kjhgkjhg'),並與存儲在db中的散列進行比較。 db爲所有用戶存儲md5(md5(密碼)+'kjhgkjhg')散列值。 因此,如果md5(密碼)被嗅探,它將無助於獲取md5(md5(密碼)+'kjhgkjhg'),因爲'kjhgkjhg'未知。 這是一個很好的方式來保證登錄頁面的安全嗎?

謝謝。

+1

是的,它確實更有意義。使用SSL *至少*。並且不要依賴Javascript來處理服務器獲取的頁面。不要使用'md5',它被認爲對於密碼哈希來說太弱。 –

+0

您是否建議從主頁面中刪除登錄塊,然後使用http作爲主頁面並使用https登錄頁面(即主頁面中的另一頁面)...謝謝。 – Haradzieniec

+4

認爲向服務器發送MD5哈希比發送純文本密碼要好很多。見:http://stackoverflow.com/q/5724683/476 – deceze

回答

1

您將需要瀏覽器創建哈希MD5(密碼+隨機()),併發送而不是MD5(密碼),以便將來沒有人可以使用哈希。然後,您需要在服務器中使用明文或雙向加密的密碼,並在服務器端執行相同的操作並對結果進行比較。您需要將發送到瀏覽器的隨機字符串保存在服務器中,以便相同的隨機數不能再次使用。這會起作用,但是。

  • 有人可能在中間劫持會話。只需捕獲cookie並使用相同的IP,服務器就完全沒有防禦能力。
  • 沒有SSL用戶無法知道他/她已經聯繫了正確的服務器,並且內容沒有改變。
  • 用戶的網站地址和流量仍然可以由中間的人或他/她的計算機上的特洛伊木馬程序讀取。
  • 通常瀏覽器密碼保存失敗。

但是。 SSL往往很慢,那些證書過期並破壞了一切。

+0

謝謝。仍然只能理解爲80%。 1步:在訪問該網站創建的唯一隨機字符串時,它位於用戶計算機和數據庫中的隱藏字段中。用戶登錄。用戶ID + md5(密碼+隨機())正在發送到服務器。然後,你說,ip和cookie不好比較。所以,我們擁有的是db中的隨機活動數字列表,並接收md5(密碼+ random())。如何找到db中的隨機數是否對應於md5(password + random())?謝謝。 – Haradzieniec

+0

訪問服務器時,服務器創建隨機數並將其存儲爲例如會話。這是在登錄之前。這個隨機數發送到瀏覽器並用於MD5()。 – anttir

+0

瀏覽器是否發送md5(隨機)和md5(密碼)或md5(密碼+隨機)?如果服務器收到md5(密碼+隨機),它不能比較這個字符串與隨機列表...即使我們保持密碼,而不是它的散列在分貝...我仍然不明白:( – Haradzieniec

1

使用SSL。關於這一點真的沒什麼可說的。如果您嘗試重新發明安全身份驗證,您將會在錯誤的

您建議不使用SSL的兩個原因是成本和速度。

費用:正常SSL證書和EV SSL證書的安全性沒有區別。 EV代表(E)擴展(V)alidation,這意味着證書頒發機構花費更多時間檢查您是否是您自稱的人。如果成本有問題,請獲取更便宜的SSL證書。

速度:這些日子,由SSL協商引起的速度放緩相當小。我剛剛做了一個快速測試,向yahoo.com發送HEAD請求,並且在1000個SSL連接中平均得到0.2秒,在1000個非SSL連接中平均得到0.1秒。如果您的頁面請求花費0.2秒,那麼SSL延遲可能會對您造成影響,但如果他們花費了整整一秒的時間,則其他原因會導致速度緩慢。

如果您搜索如何存儲和傳輸密碼http://security.stackexchange.com你會發現很多好的建議,如何安全地做到這一點。