安全的對外介面

2022-09-14 09:21:08 字數 1295 閱讀 6175

我們知道資料在傳輸過程中是很容易被抓包的,如果直接傳輸比如通過http協議,那麼使用者傳輸的資料可以被任何人獲取;所以必須對資料加密,常見的做法對關鍵字段加密比如使用者密碼直接通過md5加密;現在主流的做法是使用https協議,在http和tcp之間新增一層加密層(ssl層),這一層負責資料的加密和解密;

*****>

對稱加密:對稱金鑰在加密和解密的過程中使用的金鑰是相同的,常見的對稱加密演算法有des,aes;優點是計算速度快,缺點是在資料傳送前,傳送方和接收方必須商定好秘鑰,然後使雙方都能儲存好秘鑰,如果一方的秘鑰被洩露,那麼加密資訊也就不安全了;

非對稱加密:服務端會生成一對金鑰,私鑰存放在伺服器端,公鑰可以發布給任何人使用;優點就是比起對稱加密更加安全,但是加解密的速度比對稱加密慢太多了;廣泛使用的是rsa演算法;

資料加簽就是由傳送者產生一段無法偽造的一段數字串,來保證資料在傳輸過程中不被篡改;你可能會問資料如果已經通過https加密了,還有必要進行加簽嗎?資料在傳輸過程中經過加密,理論上就算被抓包,也無法對資料進行篡改;但是我們要知道加密的部分其實只是在外網,現在很多服務在內網中都需要經過很多服務跳轉,所以這裡的加簽可以防止內網中資料被篡改;

*****=>

資料是很容易被抓包的,但是經過如上的加密,加簽處理,就算拿到資料也不能看到真實的資料;但是有不法者不關心真實的資料,而是直接拿到抓取的資料報進行惡意請求;這時候可以使用時間戳機制,在每次請求中加入當前的時間,伺服器端會拿到當前時間和訊息中的時間相減,看看是否在乙個固定的時間範圍內比如5分鐘內;這樣惡意請求的資料報是無法更改裡面時間的,所以5分鐘後就視為非法請求了;

*****===>

long interval=5*60*1000;//超時時間

long clienttime=request.getparameter("clienttime");

long servertime=system.currenttimemillis();

if(servertime-clienttime>interval)

*****===>

趨勢遞增:這樣在儲存資料庫的時候,使用索引效能更好;

資訊保安:盡量不要連續的,容易發現規律;

*****===>

固定視窗計數器演算法

滑動視窗計數器演算法

漏桶演算法

令牌桶演算法這個可以說是每個系統都會有的處理機制,只有在資料是合法的情況下才會進行資料處理;每個系統都有自己的驗證規則,當然也可能有一些常規性的規則,比如身份證長度和組成,**號碼長度和組成等等;

示範對外介面引數文件

模組一 1 說明 1 系統間互動引數以json格式進行傳輸 2 加簽驗籤 系統會給接入者提供秘鑰,傳送請求需要根據秘鑰進行加簽,通過後才能進行交易請求 同樣,對於返回的結果系統也會進行加簽,接收方需要用秘鑰進行原交易加簽並進行比較驗證資料的完整性。注 加簽驗籤方法呼叫提供的jar包呼叫相應的方法即可...

手把手教你設計乙個安全的對外介面

一 提供介面方 1 設計簽名 md5 md5簽名 public static string getsign throws exception return signature 2 驗證簽名 public static void validatesign throws exception long i...

HTTP對外介面,如何增加簽名機制

一 簽名引數sign生成的方法 第1步 將所有引數 注意是所有引數 除去sign本身,以及值是空的引數,按引數名字母公升序排序。第2步 然後把排序後的引數按引數1值1引數2值2 引數n值n 這裡的引數和值必須是傳輸引數的原始值,不能是經過處理的,如不能將 轉成 後再拼接 的方式拼接成乙個字串。第3步...