小程序?qū)W習(xí)筆記-API接口安全

小程序?qū)W習(xí)筆記-API接口安全

一.接口安全的必要性

最近我們公司的小程序要上線了桐款,但是小程序端是外包負(fù)責(zé)的,我們負(fù)責(zé)提供后端接口魔眨。這就可能會造成接口安全問題。一些別有用心的人可以通過抓包或者其他方式即可獲得到后臺接口信息侄刽,如果不做權(quán)限校驗朋凉,他們就可以隨意調(diào)用后臺接口,進行數(shù)據(jù)的篡改和服務(wù)器的攻擊杂彭,會對一個企業(yè)造成很嚴(yán)重的影響。因此所计,為了防止惡意調(diào)用赁炎,后臺接口的防護和權(quán)限校驗非常重要钾腺。

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

二.小程序接口防護

小程序的登錄過程:

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

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

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

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

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

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

  7. 返回業(yè)務(wù)數(shù)據(jù)至小程序端

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

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

alt

sessionId

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

如下圖所示:

alt

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

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

接口防護方法

  • 使用HTTPS防止抓包,使用https至少會給破解者在抓包的時候提高一些難度
  • 接口參數(shù)的加密答姥,通過md5加密數(shù)據(jù)+時間戳+隨機字符串(salt),然后將MD5加密的數(shù)據(jù)和時間戳鹦付、原數(shù)據(jù)均傳到后臺,后臺規(guī)定一個有效時長敲长,如果在該時長內(nèi),且解密后的數(shù)據(jù)與原數(shù)據(jù)一致泽铛,則認(rèn)為是正常請求辑鲤;也可以采用aes/des之類的加密算法,還可以加入客戶端的本地信息作為判斷依據(jù)
  • 本地加密混淆月褥,以上提到的加解密數(shù)據(jù)和算法,不要直接放在本地代碼舀透,因為很容易被反編譯和破解决左,建議放到獨立模塊中去愕够,并且函數(shù)名稱越混淆越難讀越安全佛猛。
  • User-Agent 和 Referer 限制
  • api防護的登錄驗證,包括設(shè)備驗證和用戶驗證强衡,可以通過檢查session等方式來判斷用戶是否登錄
  • api的訪問次數(shù)限制码荔,限制其每分鐘的api調(diào)用次數(shù)感挥,可以通過session或者ip來做限制
  • 定期監(jiān)測,檢查日志触幼,偵查異常的接口訪問
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市堂鲤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘟栖,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酬滤,死亡現(xiàn)場離奇詭異寓涨,居然都是意外死亡,警方通過查閱死者的電腦和手機体捏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門糯崎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奏司,你說我怎么就攤上這事≡涎螅” “怎么了黄锤?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長副编。 經(jīng)常有香客問我,道長痹届,這世上最難降的妖魔是什么打月? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮柴淘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘为严。我一直安慰自己,他們只是感情好第股,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布炸茧。 她就那樣靜靜地躺著,像睡著了一般梭冠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上控漠,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天盐捷,我揣著相機與錄音,去河邊找鬼碉渡。 笑死,一個胖子當(dāng)著我的面吹牛滞诺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播朵耕,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼淋叶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了煞檩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锰霜,失蹤者是張志新(化名)和其女友劉穎桐早,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體友存,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡陶衅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了膨俐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡焚刺,死狀恐怖门烂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屯远,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布坡脐,位于F島的核電站房揭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏崩溪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一觉既、第九天 我趴在偏房一處隱蔽的房頂上張望乳幸。 院中可真熱鬧,春花似錦粹断、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽曾撤。三九已至,卻和暖如春挤悉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背装悲。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工诀诊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洞渤,地道東北人畏梆。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像宪巨,于是被迫代替她去往敵國和親溜畅。 傳聞我的和親對象是個殘疾皇子捏卓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 0怠晴、雜記 0.1浴捆、在實際的開發(fā)中,圖片資源不會存儲在小程序的目錄中选泻,因為小程序的大小不能超過1MB(現(xiàn)在改為2M)...
    it筱竹閱讀 5,339評論 0 10
  • 背景 微信小程序的使用可以快速的基于場景進行用戶圈的建立推廣,其中根據(jù)業(yè)務(wù)需要使用用戶信息以及授權(quán)過程梯捕,主要用到的...
    極樂叔閱讀 1,184評論 1 4
  • 為何人們在現(xiàn)實生活中都要帶上面具 為何人們總會投機取巧 阿諛奉承 為何人們會去說一些善意的謊言 為何人們會口是心非...
    唯愛_a91c閱讀 157評論 0 0
  • 大概可能是寫東西的時候想的太多了吧窝撵。一個環(huán)節(jié)也可以引發(fā)思緒跳躍。就拿昨天的課程來說短曾。在快到結(jié)束的時候增加了一個即興...
    oulan閱讀 409評論 1 1