之前做的一個活動由於沒做好並發和接口限制被人大量惡意請求,現在分享一些防止盜刷的經驗
轉載一篇CDSN的博客思路,有不錯的借鑒思路,出處:https://blog.csdn.net/qq_29842085/article/details/79639351:
1 / 驗證碼(最簡單有效的防護),采用點觸驗證,滑動驗證或第三方驗證碼服務,普通驗證碼很容易被破解
2 / 頻率,限制同設備,同IP等發送次數,單點時間范圍可請求時長
3 / 歸屬地,檢測IP所在地是否與手機號歸屬地匹配;IP所在地是否是為常在地
4 / 可疑用戶,對於可疑用戶要求其主動發短信(或其他主動行為)來驗證身份
5 / 黑名單,對於黑名單用戶,限制其操作,API接口直接返回success,1可以避免浪費資源,2混淆黑戶判斷
6 / 簽名,API接口啟用簽名策略,簽名可以保障請求URL的完整安全,簽名匹配再繼續下一步操作
7 / token,對於重要的API接口,生成token值,做驗證
8 / https,啟用https,https 需要秘鑰交換,可以在一定程度上鑒別是否偽造IP
9 / 代碼混淆,發布前端代碼混淆過的包
10 / 風控,大量肉雞來襲時只能受着,同樣攻擊者也會暴露意圖,分析意圖提取算法,分析判斷是否為惡意 如果是則斷掉;異常賬號及時鎖定;或從產品角度做出調整,及時止損。
11 / 數據安全,數據安全方面做策略,攻擊者得不到有效數據,提高攻擊者成本
12 / 惡意IP庫,https://threatbook.cn/,過濾惡意IP
tips:
鑒別IP真偽(自己識別代理IP和機房IP成本略高,可以考慮第三方saas服務。由肉雞發起的請求沒轍,只能想其他方法)
手機號真偽(做空號檢測,同樣丟給供應商來處理,達不到100%准確率,效率感人,並且不是實時的,可以考慮選擇有防攻擊的運營商)
安全問題是長期的和攻擊者斗智斗勇的問題,沒有一勞永逸的解決方案,不斷交鋒,不斷成長
接下來寫一部分自己的實戰感悟:
- 1、驗證碼是必須的,但是局限性很大。很多盜刷工具就直接通過工具批量獲取驗證碼再輸入到腳本中直接通過校驗,這個只能稍微做一下攔截。
- 2、redis建立一個db0庫專門用來存儲ip訪問次數和頻率,把頻率過高的ip拉黑。這個方式也有局限性,就是ip可以混淆,也是只能攔截一部分惡意請求。
- 3、前端代碼混淆。建議做,成本低有效果。
- 4、帶上簡單token驗證,能攔截一部分,token有效期可以設置短一點。
- 5、前后端簽名校驗。重要接口必須加上。
- 6、傳參的時候記得不要直接把重要信息交給前端傳,盡量后台做。
- 7、手機號黑名單。這個有供應商提供,不過收費標准有些是按條來的,項目數據量大而且預算有限的情況下不建議使用。