一、 請求防篡改
【前端】
1、 前端統一攔截所有ajax請求(如:ajaxhook.js、axios.js)
2、 分別對post請求和get請求的正文用SM3進行計算哈希值(requestSM3)
3、 將計算得到的哈希值(requestSM3)放在請求頭(參數名為:clientSM3)。
【后端】
1、 網關處攔截所有的請求
2、 判斷請求頭是否有clientSM3
3、 計算請求正文的哈希值(serverSM3)
4、 判斷clientSM3與serverSM3值是否相等(判斷請求正文是否被篡改)
二、 響應防篡改
【后端】
1、 網關攔截所有請求
2、 對所有的response響應的正文用SM3計算哈希值(responseSM3)
3、 將計算得到的哈希值(responseSM3)放在響應頭(參數名:serverSM3)
【前端】
1、 攔截所有返回數據
2、 判斷響應頭是否有serverSM3
3、 計算響應正文的哈希值(clientSM3)
4、 判斷clientSM3與serverSM3值是否相等(判斷響應正文是否被篡改)
三、 備注
注意:在計算SM3時需要先對數據toString或者toJson
加鹽:在計算SM3時需要加鹽xxxxx,請求和響應鹽值不的一樣
請求數據被篡改處理機制:后端網關直接返回:{status:-100,msg:數據包被串改}
響應數據被篡改處理機制:前台網關直接提示:數據響應異常,網絡存在安全隱患