網站註冊登陸,密碼如何進行加密?

來源:互聯網
上載者:User
在網上看了好多這方面的文章,都說用戶端的密碼,登陸時要用md5加密後發給伺服器,然後伺服器再和資料庫中的salt和加密後的密碼進行比較

不太明白如果要是這樣做的話

假設A使用者的使用者名稱為abcd,密碼為123456. md5加密後是:e10adc3949ba59abbe56e057f20f883e
對於駭客而言,他偶然擷取了使用者名稱:abcd,密碼:e10adc3949ba59abbe56e057f20f883e

此時他不用知道abcd的密碼是123456,同時也不需要理解e10adc3949ba59abbe56e057f20f883e 是怎樣產生的,他只需要輸入使用者名稱:abcd,然後密碼:e10adc3949ba59abbe56e057f20f883e 來調用服務就可以登入了。

如何避免這種情況的出現呢?


回複討論(解決方案)

駭客怎麼會知道使用者名稱abcd 和密文?

用戶端不需要加密
只需要按正常的使用者名稱和密碼登入就可以了。

然後伺服器端,對密碼執行 md5(md5(密碼)+salt) 操作,產生加密後的密碼。salt從資料庫中擷取。
再與資料庫中加密的密碼比對。
相同則登入成功,否則登入失敗。

這種做法的好處是,即使資料庫被駭客進入了,也不能知道使用者的純文字密碼。

服務端的密碼是這麼比較的

if ($row['pwd'] == md5($_POST['pwd'])){
//
}
就算別人知道MD5之後的密碼,但是來到服務端,又需要再加密一次的,或者加密多次再比較。

駭客即使黑進你的資料庫,獲得了你的會員的使用者名稱與加密過的密碼,因為md5的加密基本上是無法復原的,所以駭客是無法調用你已知的服務實現登陸操作的。

但是一層md5加密也不是很安全,很多網站都提供md5的解密。建議多次md5加密或者添加你自訂的字串然後在md5加密(md5(user_passwd.your_defined_string))。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.