日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何保证用户登陆时提交密码已经加密

發布時間:2024/4/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何保证用户登陆时提交密码已经加密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何保證用戶登陸時提交密碼已經加密?密碼是否已加密,需要客戶端和服務端建立約定,雙方按約定辦事就行了。

這里提到的另一個問題是,如何保證傳輸安全?
最理想的方案當然是走 HTTPS 協議. HTTPS 在理論上是可靠的,但在國內會打一些折扣:你可以隨便找一臺電腦看看有沒有安裝商業公司或機構的根證書,這些根證書為線路某節點成為中間人提供了可能性;同時,在木馬橫行的年代,密碼在加密提交前可能就被拿到了,此時 HTTPS 成了擺設,這是為什么國內流行密碼控件的一個重要原因。

從成本和需求上考慮,對于眾多對安全性要求不高的個人網站,仍然可以考慮采用 HTTP 傳輸,密碼提交前通過 JavaScript 加密。由于 JavaScript 代碼暴露在客戶端,因此一般通過不可逆的加密方法加密密碼,而對于任何摘要式的加密算法,都可以通過類似 md5 字典的方式直接查表獲知弱密碼,所以要混入 salt 以增加制作字典的成本。可想而知,解密只是時間成本的問題。因此這里的重要前提是“對安全性要求不高”。

如何驗證密碼呢?一個可行的方法是,客戶端提交 md5(password) 密碼(如上所述,此方法只是簡單保護了密碼,是可能被查表獲取密碼的)。服務端數據庫通過 md5(salt+md5(password)) 的規則存儲密碼,該 salt 僅存儲在服務端,且在每次存儲密碼時都隨機生成。這樣即使被拖庫,制作字典的成本也非常高。
密碼被 md5() 提交到服務端之后,可通過 md5(salt + form['password']) 與數據庫密碼比對。此方法可以在避免明文存儲密碼的前提下,實現密碼加密提交與驗證。
這里還有防止 replay 攻擊(請求被重新發出一次即可能通過驗證)的問題,由服務端頒發并驗證一個帶有時間戳的可信 token (或一次性的)即可。
當然,傳輸過程再有 HTTPS 加持那就更好了。

最后,為什么要密碼控件?原因之一是上面說的,要防止密碼在提交前被截獲。當然,還有一些其他原因,工作所限,這里就不說了。

轉載于:https://www.cnblogs.com/yangguoe/p/8552138.html

總結

以上是生活随笔為你收集整理的如何保证用户登陆时提交密码已经加密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。