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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

一种h5前端和服务端通信的安全方案

發布時間:2024/3/12 HTML 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一种h5前端和服务端通信的安全方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

前后端H5防篡改、防重放、敏感信息加解密、防XSS攻擊方案

完整步驟如下:

1、?前端打開h5頁面時,調用后端接口獲取后端服務器時間,并計算出后端服務器時間與APP時間偏差。調用后端接口獲取后端通訊密鑰(公鑰)。(APP調用后端就接口傳入的時間戳參數Timestamp= APP當前時間+ 【后端服務器時間與APP時間偏差】)。

2、?前端生成一個AES密鑰,用通訊密鑰(公鑰)對其做RSA加密,獲得加密后的AES密鑰為ENCODE_KEY。

3、? 前端將所有業務參數組裝成json字符串,上傳參數名為FieldVals

4、? 前端將業務參數整體jsonFieldVals以及其他公共參數按照參數名字進行排序,以value:key的方式一個一個用“|”拼接起來,然后把拼接串前后用括號括起來,接著對其整體做sha1加密(其中sha1的加密密碼為AES密鑰明文),從而獲得數字簽名Signture

偽代碼:Sha1(value1:key1|value2:key2|value3:key3)

5、?前端用AES密鑰對FieldVals做AES加密,Base64 encode, url encode得到EncodeFieldVals。(前端應該支持根據URL配置或參數名字過濾兩種加密策略)

6、?ENCODE_KEY, FieldVals或EncodeFieldVals,Signture以及其他公共參數上傳到后端接口(post)。(注意有敏感信息的情況上傳EncodeFieldVals,無敏感信息的情況下上傳FieldVals, 兩者只上傳一個)。

7、?后端用通訊密鑰(私鑰)對ENCODE_KEY 進行RSA解密得到AES密鑰。

8、?如果前端有傳入EncodeFieldVals,后端對EncodeFieldVals進行url decode, Base64decode,AES解密,得到FieldVals放入httpRequestWapper.

9、? 后端把接收到的所有參數按照參數名字進行排序(Signture,EncodeFieldVals除外),以value:key的方式一個一個用“|”拼接起來,然后把拼接串前后用括號括起來,接著整體做sha1加密(其中sha1的加密密碼為AES密鑰明文),得到的值與Signture做比對,如果不相等,說明被篡改直接返回前端。否則繼續下一步。

10、后端獲取公共參數Timestamp,拿服務器系統時間減去Timestamp,看是否超過5分鐘,如果超過說明請求已經失效,直接返回前端,否則繼續下一步。

11、?后端獲取公共參數RequestId(由前端每次請求生成并且保證唯一),檢查服務器緩存中是否已經存在此RequestId,如果已經存在,證明是重放請求,直接返回前端,否則將此RequestId緩存起來,5分鐘失效,繼續下一步。

12、?后端將FieldVals按照規則分解成一個一個的參數放入httpRequestWapper。

13、?后端執行業務處理邏輯。

14、?后端對業務處理返回的結果對象進行遍歷,進行XSS腳本過濾處理。

15、?后端獲取結果對象中的data部分,并轉換為json字符串,然后用AES密鑰進行加密得到EncodeFieldVals,把EncodeFieldVals設置到結果對象中,同時清空data。(后端應該支持根據URL配置或參數名字過濾兩種加密策略)

16、?后端返回前端結果對象。

17、?前端拿到結果對象,獲取EncodeFieldVals部分,用AES密鑰進行解密,得到json字符串,然后轉換成json數據對象,接下來做后續處理。

?

說明:

1、?ENCODE_KEY,登陸區外需要敏感信息加密的接口必傳,登陸區內接口不需要傳,因為登陸時已保存在會話中,登陸區內可共享。

2、?敏感信息加解密、防重放,不是所有接口都做,可以通過配置對某些接口生效。

敏感信息加密支持對包含某些字段的報文進行自動加密。

前端負責對上送給后端的敏感信息進行加密,對后端返回來的敏感信息進行解密。

后端負責對前端上送的敏感信息進行解密,對返回給前端的敏感信息進行加密。

3、? 增加ClientType公共字段,傳值為H5? 用來區分native, h5, pc

4、? 公共參數設備號之類的

5、? 請參照native公共參數的傳遞方式,把公共參數放在URL之后傳遞。

FieldVals,EncodeFieldVals業務參數需要post過來。

?

?

總結

以上是生活随笔為你收集整理的一种h5前端和服务端通信的安全方案的全部內容,希望文章能夠幫你解決所遇到的問題。

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