最近做了個(gè)不大點(diǎn)的微信活動(dòng),上線之后,出現(xiàn)了無(wú)窮盡的微信刷子,這些刷子的openid都不一樣,昵稱也格式相似,通過記錄IP發(fā)現(xiàn),IP都是相同的,一個(gè)IP有上千個(gè)微信用戶,我很是費(fèi)解,不知道現(xiàn)在是不是有什么黑科技可以偽造這點(diǎn)了;我先說下我的流程 1,用戶授權(quán),session記錄用戶openid 2,用戶參加活動(dòng),完成活動(dòng)一系列指定操作,完成活動(dòng),將用戶信息錄入數(shù)據(jù)庫(kù) 3,用戶完成活動(dòng),分享朋友圈,朋友圈朋友進(jìn)入授權(quán)session記openid,,幫用戶完成指定操作 4,朋友完成操作后,用戶可抽獎(jiǎng) 大體一看,沒什么漏洞,上線之后,被刷子們刷懵逼了 前端與后臺(tái)總給有兩個(gè)個(gè)接口的交互: 1,用戶完成一系列活動(dòng)操作后請(qǐng)求后臺(tái),后臺(tái)錄入數(shù)據(jù),暫且叫做接口一 2,朋友圈朋友完成操作接口,暫且叫做接口二 3,用戶本身抽獎(jiǎng),暫且叫做接口三 下面說下刷子走的流程: 1,刷子要么是黑科技要么是真有很多個(gè)微信號(hào),通過微信授權(quán)接口來(lái)到活動(dòng)首頁(yè),滿足session存儲(chǔ)openid的要求,只一次就夠了??! 2,刷子授權(quán)之后直接走接口一,可以快速的將自身信息錄入我的數(shù)據(jù)庫(kù),直接跨過前端活動(dòng)的一系列操作 3,刷子的好友授權(quán)之后直接走接口二,完成朋友操作; 4,刷子抽獎(jiǎng) 我的解決辦法: 1,接口一 增加IP次數(shù)的調(diào)用限制 增加單用戶調(diào)用接口限制(適中 既能滿足普通用戶需求也要讓刷子難受) 2,接口一 增加接口調(diào)用頻率限制(同一用戶在一定次數(shù)內(nèi)每隔10秒可以調(diào)用一次,超過一定次數(shù),間隔時(shí)間翻倍) 3,最主要的,刷子為什么可以直接調(diào)用接口,因?yàn)榉?wù)端并沒有記錄用戶的活動(dòng)軌跡,我們需要做的是:用戶必須按照指定的操作順序才可以調(diào)用接口一,少一步或跳步都不行;我的解決方案是:直接在服務(wù)端記錄,不讓前端通知,這就需要把活動(dòng)系列操作分開來(lái)走,用戶授權(quán)進(jìn)入記錄值1 用戶完成A操作記錄2 依次類推,這樣刷子即使發(fā)現(xiàn)這個(gè)邏輯,他也必須一步一步的訪問,增加她的時(shí)間代價(jià) 4,朋友圈進(jìn)入的用戶 也需要增加記錄,必須記錄進(jìn)入首頁(yè) 完成操作X,才允許完成最終操作;同時(shí)增加可完成的操作間隔,禁止無(wú)限制的操作 以上就是我的解決方案,但其實(shí)還是有漏洞,刷子還是可以繼續(xù)刷,但是這樣刷子要深究我的判斷機(jī)制,最后判斷出機(jī)制,開始刷的時(shí)候,所花費(fèi)的時(shí)間,操作的復(fù)雜度,也不會(huì)比正式用戶少多少; |
|
來(lái)自: CoCO-Ebook > 《數(shù)據(jù)庫(kù)》