欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序-API接口安全詳解

 更新時(shí)間:2019年07月16日 11:28:32   作者:趙客縵胡纓v吳鉤霜雪明  
這篇文章主要介紹了微信小程序-API接口安全詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一.接口安全的必要性

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

因此,為了防止惡意調(diào)用,后臺(tái)接口的防護(hù)和權(quán)限校驗(yàn)非常重要。

雖然小程序有HTTPs和微信保駕護(hù)航,但是還是要加強(qiáng)安全意識(shí),對(duì)后端接口進(jìn)行安全防護(hù)和權(quán)限校驗(yàn)。

二.小程序接口防護(hù)

小程序的登錄過程:

  1. 小程序端通過wx.login()獲取到code后發(fā)送給后臺(tái)服務(wù)器
  2. 后臺(tái)服務(wù)器使用小程序的appid、appsecret和code,調(diào)用微信接口服務(wù)換取session_key和openid(openid可以理解為是每個(gè)用戶在該小程序的唯一識(shí)別號(hào))
  3. 后臺(tái)服務(wù)器自定義生成一個(gè)3rd_session,用作openid和session_key的key值,后者作為value值,保存一份在后臺(tái)服務(wù)器或者redis或者mysql,同時(shí)向小程序端傳遞3rd_session
  4. 小程序端收到3rd_session后將其保存到本地緩存,如wx.setStorageSync(KEY,DATA)
  5. 后續(xù)小程序端發(fā)送請(qǐng)求至后臺(tái)服務(wù)器時(shí)均攜帶3rd_session,可將其放在header頭部或者body里
  6. 后臺(tái)服務(wù)器以3rd_session為key,在保證3rd_session未過期的情況下讀取出value值(即openid和session_key的組合值),通過openid判斷是哪個(gè)用戶發(fā)送的請(qǐng)求,再和發(fā)送過來的body值做對(duì)比(如有),無誤后調(diào)用后臺(tái)邏輯處理
  7. 返回業(yè)務(wù)數(shù)據(jù)至小程序端

會(huì)話密鑰session_key 是對(duì)用戶數(shù)據(jù)進(jìn)行加密簽名的密鑰。為了應(yīng)用自身的數(shù)據(jù)安全,開發(fā)者服務(wù)器不應(yīng)該把會(huì)話密鑰下發(fā)到小程序,也不應(yīng)該對(duì)外提供這個(gè)密鑰。

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

sessionId

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

如下圖所示:

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

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

接口防護(hù)方法

  • 使用HTTPS防止抓包,使用https至少會(huì)給破解者在抓包的時(shí)候提高一些難度
  • 接口參數(shù)的加密,通過md5加密數(shù)據(jù)+時(shí)間戳+隨機(jī)字符串(salt),然后將MD5加密的數(shù)據(jù)和時(shí)間戳、原數(shù)據(jù)均傳到后臺(tái),后臺(tái)規(guī)定一個(gè)有效時(shí)長(zhǎng),如果在該時(shí)長(zhǎng)內(nèi),且解密后的數(shù)據(jù)與原數(shù)據(jù)一致,則認(rèn)為是正常請(qǐng)求;也可以采用aes/des之類的加密算法,還可以加入客戶端的本地信息作為判斷依據(jù)
  • 本地加密混淆,以上提到的加解密數(shù)據(jù)和算法,不要直接放在本地代碼,因?yàn)楹苋菀妆环淳幾g和破解,建議放到獨(dú)立模塊中去,并且函數(shù)名稱越混淆越難讀越安全。
  • User-Agent 和 Referer 限制
  • api防護(hù)的登錄驗(yàn)證,包括設(shè)備驗(yàn)證和用戶驗(yàn)證,可以通過檢查session等方式來判斷用戶是否登錄
  • api的訪問次數(shù)限制,限制其每分鐘的api調(diào)用次數(shù),可以通過session或者ip來做限制
  • 定期監(jiān)測(cè),檢查日志,偵查異常的接口訪問

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入了解JavaScript 防抖和節(jié)流

    深入了解JavaScript 防抖和節(jié)流

    這篇文章主要介紹了JavaScript 防抖和節(jié)流,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • js實(shí)現(xiàn)用戶注冊(cè)協(xié)議倒計(jì)時(shí)的方法

    js實(shí)現(xiàn)用戶注冊(cè)協(xié)議倒計(jì)時(shí)的方法

    這篇文章主要介紹了js實(shí)現(xiàn)用戶注冊(cè)協(xié)議倒計(jì)時(shí)的方法,是開發(fā)會(huì)員注冊(cè)功能時(shí)非常實(shí)用的技巧,需要的朋友可以參考下
    2015-01-01
  • 微信小程序?qū)崿F(xiàn)購物車代碼實(shí)例詳解

    微信小程序?qū)崿F(xiàn)購物車代碼實(shí)例詳解

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)購物車代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • js和html5實(shí)現(xiàn)手機(jī)端刮刮卡抽獎(jiǎng)效果完美兼容android/IOS

    js和html5實(shí)現(xiàn)手機(jī)端刮刮卡抽獎(jiǎng)效果完美兼容android/IOS

    手機(jī)完美支持html5,所以如果手機(jī)端想要做個(gè)抽獎(jiǎng)模塊的話,用刮刮卡抽獎(jiǎng)效果,相信這個(gè)互動(dòng)體驗(yàn)是非常棒的,本人親自完成,有錯(cuò)誤請(qǐng)大家指出
    2013-11-11
  • JavaScript中播放音頻文件的幾種常用方法

    JavaScript中播放音頻文件的幾種常用方法

    JS可以用來播放多種聲音文件,包括常見的mp3、wav等格式,這篇文章主要給大家介紹了關(guān)于JavaScript中播放音頻文件的幾種常用方法,需要的朋友可以參考下
    2023-10-10
  • 淺析JavaScript中的平穩(wěn)退化(graceful degradation)

    淺析JavaScript中的平穩(wěn)退化(graceful degradation)

    所謂平穩(wěn)退化,就是指可以讓訪問者在瀏覽器不支持javascript或者禁用了JavaScript的時(shí)候依舊可以順利的瀏覽你的網(wǎng)頁,下文給大家簡(jiǎn)單介紹了js中的平穩(wěn)退化,感興趣的朋友一起看看吧
    2017-07-07
  • javascript制作坦克大戰(zhàn)全紀(jì)錄(1)

    javascript制作坦克大戰(zhàn)全紀(jì)錄(1)

    本文寫作的目的是鞏固一下自己最近學(xué)習(xí)的js知識(shí), 這個(gè)教程適合熟悉js基本語法和面向?qū)ο笳Z法的小伙伴學(xué)習(xí)。由于自己也是剛學(xué)js不久,所以難免出現(xiàn)錯(cuò)誤。如果發(fā)現(xiàn)希望給予指正。
    2014-11-11
  • JS對(duì)象類型之Error錯(cuò)誤對(duì)象的用法詳解

    JS對(duì)象類型之Error錯(cuò)誤對(duì)象的用法詳解

    error對(duì)象是JavaScript的原生對(duì)象,當(dāng)程序解析和運(yùn)行過程中發(fā)生了錯(cuò)誤,JS引擎就會(huì)自動(dòng)產(chǎn)生并拋出一個(gè)error對(duì)象的實(shí)例,并且程序會(huì)終止在錯(cuò)誤發(fā)生的地方,本文給大家介紹了JS Error錯(cuò)誤對(duì)象的用法,需要的朋友可以參考下
    2024-04-04
  • Bootstrap 網(wǎng)格系統(tǒng)布局詳解

    Bootstrap 網(wǎng)格系統(tǒng)布局詳解

    在平面設(shè)計(jì)中,網(wǎng)格是一種由一系列用于組織內(nèi)容的相交的直線(垂直的、水平的)組成的結(jié)構(gòu)(通常是二維的)。這篇文章主要介紹了Bootstrap 網(wǎng)格系統(tǒng)布局,需要的朋友可以參考下
    2017-03-03
  • js實(shí)現(xiàn)可輸入可選擇的select下拉框

    js實(shí)現(xiàn)可輸入可選擇的select下拉框

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)可輸入可選擇的select下拉框,可及時(shí)匹配包含輸入的內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12

最新評(píng)論