安全是乙個比較泛的概念
我個人比較習慣從三個維度分別論述資料的安全:
1.資料介面訪問許可權是否可以控制
2.資料介面提供的資料內容是否能保證不被他人獲取
3.資料完整性是否可以保證
1.訪問許可權是否可以控制?
一般客戶端對接伺服器,介面許可權控制的模型是基於session或token,token和sessionid在網路中傳輸的過程中,若沒有其他安全性的保證,被他人竊取token或sessionid即可獲取到該使用者的訪問許可權,如果我們意圖想保護token或sessionid,對token和sessionid做md5傳輸,實際上完全多此一舉,他人如果拿到md5(token)一樣可以獲得該使用者的許可權(這個論述略顯幼稚,但是其實我也見過不少人是這麼用md5的),此時我們進一步想,如果在讓客戶端每次請求時對token+時間戳後再做md5,並把md5和時間戳傳送給服務端,服務端接收到請求後先對時間戳做校驗,再對md5做校驗,這樣就能保證暴露在網路中的md5值 只在一段時間內有效,一定程度上通過md5提公升了許可權控制的能力。
如果是伺服器對接伺服器,道理和上面類似,雙方約定乙個token,並使用這個token進行互動,由於這個token一般不會發生什麼變化,所以我們更應該保護這個token不被竊取(和c/s略有不同,因為c/s模型的token是動態變化的)。保護的方式和上述論述一致,我們可以對這個token加時間戳 再做md5,保證乙個許可權認證符號只在某個時間內有效,就算被竊取(當然我之前也有見過有人加隨機數再做md5的,個人感覺也並沒有什麼用,因為完全可以用同乙個隨機數進行反覆請求)。
如上就是md5對訪問許可權控制能力的提公升(個人見解)。
2.資料介面提供的資料內容是否能保證不被他人獲取?
md5並不能保證資料內容不被他人獲取。
3.資料完整性是否可以保證?
如果僅僅是為了防範因為網路問題導致的丟包等原因,這類問題如果我們對資料做md5,並作為乙個額外的引數進行傳遞,在獲取到資料後再做md5校驗,可以解決這類問題,但是這種方式並不能解決資料被篡改的問題(我個人把資料篡改的問題歸納與資料完整性,不知道對不對),如果有人為因素惡意對資料進行篡改,那他也完全有能力再對資料做一次md5,這樣簡單的md5就不能解決這類問題,(我們可以提供另乙個頁面專門用於檢視md5,使用者獲取到資料檔案後,再去另乙個頁面對比md5是一種解決的方式),另一種方式就是通過約定乙個鹽值,對資料加鹽後md5,不但可以保證防止丟包等問題,也可以防止資料內容被篡改的問題。這個加鹽後md5,可以認為是對資料的簽名。這個鹽值通過郵箱或線下的方式交換。 缺點就是如果一方的鹽值洩露,就會導致資料簽名失效。(這個時候就能看出rsa私鑰做簽名的好處了)
如何在vue專案中使用md5加密
md5 資訊 摘要演算法,是讓大容量資訊在用數字簽名軟體簽署私人密匙前被 壓縮 成一種保密的格式 一般我們把登入和註冊資訊的密碼進行加密 1.安裝模組 npm install js md5 d2.在專案中引入模組 import md5 from js md5 3.把你需要加密的資訊進行前期處理 ca...
如何在Python中計算檔案的MD5雜湊
本文是對這篇文章的翻譯 如何在python中計算檔案的md5雜湊 md5是一種訊息摘要演算法,用於從可變輸入資料中建立唯一的固定大小值。md5通常用於檢查檔案在傳輸過程中是否損壞 在這種情況下,雜湊值稱為校驗和 檔案中的任何更改都將導致不同的md5雜湊值。以下python程式計算給定檔案的md5雜湊...
iOS中MD5加密與網路資料安全
在做網路應用程式的時候 時時刻刻要保證使用者資料的安全 因此要加密。md5演算法在國內用的很多.md5演算法的特點 同樣的資料 加密結果是一樣的.32個字元 不可逆的 不能逆向解密 可用於檔案校驗 指紋識別.md5演算法是公開的,ios中已經包裝好了md5演算法。可以將其寫成字串的分類 objc v...