一次項目中的驗籤加密的一些坑(主要是數據格式問題)

最近接手了一個項目
是一個比較完整的項目了 我須要進行改造 是基於vuecli3.0+webpack開發的u
其中有一個功能就是咱們每一個請求都要進行一次驗籤 就是取一些字符串進行加密 並將驗籤加入請求頭中 後臺也用相同的算法進行加密 而後比對
這個功能自己是寫好的 可是有些問題
咱們其中的加密字段是穿的參數按照字母排序 而後取第一個參數的前三位和最後一個參數的後三位
這都很簡單用sort()方法排序一下就行
第一個問題就是
axios直接傳值的話服務端會認爲是字符串因此截取的時候會將符號也截取通常就成了{"+排序第一的參數的第一個字母和排序最後一個參數的最後一個字母 + "} 這樣明顯是有問題的 不過這個解決也簡單 直接用qs這個插件處理一下就ok 這裏我作了一個處理 若是requestData是類型是字符串 用vue

requestData.split('&').sort().join('').replace(/([^=><])=([^=><])/g,'$1$2');

進行排序
若是是對象 用webpack

for (var i in requestData) {
            dataString += `${i}${requestData[i]}&`
                }
                dataString = dataString.split('&').sort().join('')

進行排序
這樣就解決了大部分的問題ios

可是昨天忽然有一個模塊說驗籤又不過了
我就很奇怪 就讓後端小哥把沒加密的串返回給我對比了一下
首先仍是我上面說的截取到了符號 這個簡單 qs處理一下
而後這裏的問題是用qs處理事後 參數中若是帶有中文 後端接收到的實際上是中文 可是qs本身會對中文進行encodeURIComponent轉碼 這個處理也很簡單 使用decodeURIComponent() 函數進行解碼就能夠web

相關文章
相關標籤/搜索