4 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
不知道誰(shuí)給上面的點(diǎn)的踩,這里補(bǔ)充一點(diǎn)兒內(nèi)容。
首先,作為開發(fā)者,不應(yīng)該知道用戶的原文密碼。猶如上面說(shuō)的
前端計(jì)算和后臺(tái)計(jì)算兩種方式都有,但后臺(tái)計(jì)算的方式顯然更加不安全
。
的確,從安全的角度來(lái)說(shuō),如果是 http
那么用戶在向后臺(tái)發(fā)送數(shù)據(jù)時(shí)如果有第三方介入,就已經(jīng)不安全了,第三方就可以在這里面拿到密碼原文了,但是如果在前端使用 md5 + salt 就已經(jīng)確保了在傳輸過(guò)程中第三方無(wú)法完全取得用戶的密碼原文,因?yàn)槭莌ash算法,即使第三方拿到了算法也無(wú)濟(jì)于事,碰撞也是需要成本的,只要你的 salt 夠長(zhǎng),或者算法夠安全,這就是絕對(duì)安全,基本做到了,但是 問題就在于,因?yàn)樗惴ú豢山饷埽笈_(tái)也無(wú)法驗(yàn)證hash是用戶發(fā)出的或者說(shuō)第三方修改后的,畢竟從這個(gè)時(shí)候開始,服務(wù)器已經(jīng)只認(rèn)識(shí) hash 了并不知道原文,如果想想一下是在注冊(cè)傳輸過(guò)程中,第三方修改了 數(shù)據(jù),后臺(tái)也會(huì)信任,因?yàn)檫@是建立在 http 的基礎(chǔ)上的,基本談不了安全。
也有人會(huì)覺得 那不用hash 用可以解密的方式,例如 RSA ,對(duì)稱加密,由前端散布公鑰進(jìn)行加密,加密完成后只有私鑰可以解密,然后服務(wù)端就可以用私鑰解密出數(shù)據(jù),但是!RSA 加密的數(shù)據(jù)長(zhǎng)度是有限的。其次 你在這里做的工作其實(shí)已經(jīng)有人幫我們做了,那就是 https 。
還有的解決方案 比如 AES / RSA 混合加密,這些東西,不是沒人去使用,而是成本過(guò)大。就像用6位數(shù)密碼保管者2位數(shù)的余額。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
添加回答
舉報(bào)