中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序中如何實現API接口安全

發布時間:2021-07-05 11:39:19 來源:億速云 閱讀:3175 作者:小新 欄目:web開發

這篇文章主要介紹了微信小程序中如何實現API接口安全,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一.接口安全的必要性

最近我們公司的小程序要上線了,但是小程序端是外包負責的,我們負責提供后端接口。這就可能會造成接口安全問題。一些別有用心的人可以通過抓包或者其他方式即可獲得到后臺接口信息,如果不做權限校驗,他們就可以隨意調用后臺接口,進行數據的篡改和服務器的攻擊,會對一個企業造成很嚴重的影響。

因此,為了防止惡意調用,后臺接口的防護和權限校驗非常重要。

雖然小程序有HTTPs和微信保駕護航,但是還是要加強安全意識,對后端接口進行安全防護和權限校驗。

二.小程序接口防護

小程序的登錄過程:

微信小程序中如何實現API接口安全

  1. 小程序端通過wx.login()獲取到code后發送給后臺服務器

  2. 后臺服務器使用小程序的appid、appsecret和code,調用微信接口服務換取session_key和openid(openid可以理解為是每個用戶在該小程序的唯一識別號)

  3. 后臺服務器自定義生成一個3rd_session,用作openid和session_key的key值,后者作為value值,保存一份在后臺服務器或者redis或者mysql,同時向小程序端傳遞3rd_session

  4. 小程序端收到3rd_session后將其保存到本地緩存,如wx.setStorageSync(KEY,DATA)

  5. 后續小程序端發送請求至后臺服務器時均攜帶3rd_session,可將其放在header頭部或者body里

  6. 后臺服務器以3rd_session為key,在保證3rd_session未過期的情況下讀取出value值(即openid和session_key的組合值),通過openid判斷是哪個用戶發送的請求,再和發送過來的body值做對比(如有),無誤后調用后臺邏輯處理

  7. 返回業務數據至小程序端

會話密鑰session_key 是對用戶數據進行加密簽名的密鑰。為了應用自身的數據安全,開發者服務器不應該把會話密鑰下發到小程序,也不應該對外提供這個密鑰。

session_key主要用于wx.getUserInfo接口數據的加解密,如下圖所示:

微信小程序中如何實現API接口安全

sessionId

在微信小程序開發中,由wx.request()發起的每次請求對于服務端來說都是不同的一次會話。啥意思呢?就是說區別于瀏覽器,小程序每一次請求都相當于用不同的瀏覽器發的。即不同的請求之間的sessionId不一樣(實際上小程序cookie沒有攜帶sessionId)。

如下圖所示:

微信小程序中如何實現API接口安全

實際上小程序的每次wx.request()請求中沒有包含cookie信息,即沒有sessionId信息。

但是我們可以在每次wx.request()中的header里增加。

接口防護方法

  • 使用HTTPS防止抓包,使用https至少會給破解者在抓包的時候提高一些難度

  • 接口參數的加密,通過md5加密數據+時間戳+隨機字符串(salt),然后將MD5加密的數據和時間戳、原數據均傳到后臺,后臺規定一個有效時長,如果在該時長內,且解密后的數據與原數據一致,則認為是正常請求;也可以采用aes/des之類的加密算法,還可以加入客戶端的本地信息作為判斷依據

  • 本地加密混淆,以上提到的加解密數據和算法,不要直接放在本地代碼,因為很容易被反編譯和破解,建議放到獨立模塊中去,并且函數名稱越混淆越難讀越安全。

  • User-Agent 和 Referer 限制

  • api防護的登錄驗證,包括設備驗證和用戶驗證,可以通過檢查session等方式來判斷用戶是否登錄

  • api的訪問次數限制,限制其每分鐘的api調用次數,可以通過session或者ip來做限制

  • 定期監測,檢查日志,偵查異常的接口訪問

感謝你能夠認真閱讀完這篇文章,希望小編分享的“微信小程序中如何實現API接口安全”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会泽县| 科技| 石屏县| 安徽省| 涞水县| 五家渠市| 通榆县| 福建省| 柳林县| 易门县| 扎赉特旗| 新丰县| 呼伦贝尔市| 福贡县| 嘉定区| 黎川县| 潜江市| 布拖县| 布尔津县| 四子王旗| 梨树县| 兴山县| 醴陵市| 张家界市| 开远市| 蓬溪县| 衡阳县| 彭泽县| 深圳市| 绥滨县| 玛曲县| 景宁| 昌乐县| 邵武市| 永昌县| 英德市| 济南市| 武宣县| 昔阳县| 洪湖市| 拜城县|