為什么會有人要刷接口?
1、牟利
黃牛在 12306 網上搶票再倒賣。
2、惡意攻擊競爭對手
如短信接口被請求一次,會觸發幾分錢的運營商費用,當量級大了也很可觀。
3、壓測
用 apache bench 做壓力測試。
4、當程序員無聊的時候
什么是刷接口的"刷"字?
1、次數
多
2、頻率
頻繁,可能 1 秒上千次
3、用戶身份難以識別
可能會在刷的過程中隨時換瀏覽器或者 ip
判斷接口是否是惡意?
根據用戶粒度,如果該用戶符合上面提到的“刷”的概念,就是惡意的。
用戶粒度如何划分?
1、當前網頁
優點:無
缺點:沒有任何意義,一刷新頁面用戶的身份就變了
2、session
優點:偽造成本一般(可以理解成一個瀏覽器對應了一個用戶)
缺點:當用戶手動清除 cookie 的時候即失效
3、ip
優點:偽造成本高
缺點:要考慮一個公司、一個小區的人一般會共享一個 ip,所以適當的要放寬對單一 ip 的請求限制
ip 信息是存在請求頭里的,而 https 對請求本身做了加密,可以防止 ip 信息被偽造或篡改。所以推薦服務器采用 https 傳輸。
當知道接口是惡意請求時,我們該怎么做?
一、直接拒絕訪問
優點:簡單粗暴
缺點:簡單粗暴
二、返回“操作頻繁”的錯誤提示
優點:提示友好
缺點:會把確實是操作比較頻繁的真實用戶攔截
三、驗證碼
1、圖形

2、滑塊

3、找不同

優點:精准識別請求是真人還是機器發出的,二次篩選出真正的用戶
缺點:不夠人性化,用戶操作時間長、體驗差
總結
安全問題是長期的和攻擊者斗智斗勇的問題,沒有一勞永逸的解決方案,不斷交鋒,不斷成長