如何防止簡訊API介面遍歷

2022-02-20 20:11:02 字數 2128 閱讀 3444

簡訊api介面在web中得到越來越多的應用,如使用者註冊,登入,密碼重置等業務模組都會使用手機驗證碼進行身份驗證。一般情況下,我們會採用這樣的安全策略,將簡訊傳送頻率限制在正常的業務流控範圍內,比如,乙個手機號一天最多下發10條簡訊,同時限制時效,驗證次數。但這樣的策略,攻擊者通過遍歷手機號,還是阻止不了簡訊資源被消耗的情況。

如何防止簡訊api介面遍歷呢?

在平時瀏覽**的時候,我會稍微留意一些**是怎麼做的,並記錄了一些簡訊api介面防遍歷的技術實現方式。

第一種方式:白名單

這是最簡單的一種方式,但應用場景有限,比如,在一些內部應用系統(從hr系統或其他系統同步手機號過來驗證),此時,只需要驗證是否為內部員工手機號,如不是,直接提示非內部員工手機號;如是,再執行簡訊api流控策略。

使用者點選獲取簡訊驗證碼的時候,彈出圖形驗證碼進行驗證,同時傳送圖形驗證碼和手機號碼到後台驗證。

當然,這種方式使用者體驗極差,每次都需要手動需要驗證碼才能傳送手機驗證碼,於是,有了進一步的優化方案,從使用者體驗和安全角度出發,可設計為當使用者輸入3次錯誤手機驗證碼後自動彈出驗證碼。

還有另外一種方式,採用當下比較流行的滑塊驗證或點選驗證方式,使用者體驗也會有所改善。

前端與後台協商好加密方式,比如md5(timestamp+telphone+salt),前台發起請求時,同時傳送 timestamp、telephone、sign引數,後台接收這些引數,按照協商好的加密方式生成乙個校驗值與sign進行對比,如果錯誤,則不處理。另外,js**混淆+簡訊api業務流控限制。

風險點:雖然做了**混淆,但js加密演算法一旦洩漏,並不是一種安全的措施,但也是一種比較容易實現的技術方案。

客戶端ajax**實現:

var timestamp = (new

date).gettime();

var sign = md5(timestamp+telephone+"

qwertyuiopasdfghjkl");

ajax.post(,

...........

以上,是三種常見的預防簡訊api介面遍歷的技術實現方案。

我建立了乙個免費的知識星球,主要用於技術問題**。我將這個問題發表在知識星球,得到了不少星友的熱情回應,以下摘錄一些星友們的看法。

@超人:限制ip有可能誤傷同一區域網下的使用者,最好是登陸後允許傳送,限制使用者的傳送次數

@密因:同一手機號,60秒內不能重**送,24小時內總共傳送不超過5次;2個及以上手機號,通過識別客戶端特徵,出口ip,隨機字串,判定是否為同一使用者,對同一使用者使用限制措施。或者設定略高於平常請求數的基線,如日常1分鐘100個簡訊請求,基線設定為150,1分鐘內超過150次之外的請求丟棄。

@antares:限制每個ip、帳號每天的請求頻率和數量,對請求引數做簽名校驗,防止請求重放

@adler:在獲取驗證碼前加驗證,然後黑名單遮蔽虛擬號,限制每個ip一定時間內的請求數和限制每個手機號請求的總次數。

@yd:一般都是限制ip在時間段內請求次數,限制同一手機號傳送次數,加圖形或滑動等驗證碼。

@mr.周:設定請求上線 遮蔽虛擬號碼段。

@ch4ce:我們限制了ip位址,雖然這樣不是最好的解決方案。

@loki⚡:我個人感覺,首先確保傳送簡訊驗證碼的邏輯是正確的,然後可以根據業務的重要程度決定是用安全產品,還是自己開發人機識別功能。

1024:人機驗證,裝置號,帆布指紋, ip。

corp0ra1:如果可以的話,匹配使用者名稱?

掉到魚缸裡的貓:限制同ip請求次數。

zxt:每個使用者一天或者乙個小時只允許三個驗證碼,同ip每天只允許三個使用者獲取驗證碼。這種模式比較常用。

這是乙個免費的星球,誠邀你的加入!

如何防止簡訊介面被刷?

簡訊驗證碼作為重要的身份驗證工具,因其操作簡便 安全性高 時效性強等優點已被開發人員廣泛使用。但因其獲取便利 限制較少容易被不法分子利用進行簡訊轟炸,惡意刷掉大量簡訊費用,給公司或個人造成大量的金錢損失,造成這種情況原因主要是在產品實際設計過程中,有些產品人員因為對技術實現不太了解,防範意識薄弱,簡...

簡訊介面api傳送 kewail

簡訊通知和驗證碼 大容量高併發,5秒內可達,三網合一專屬通道。變數靈活,支援帶入變數,內容靈活,可適應支援各業務場景。適用簡訊通知和驗證碼,訂單,告警等。接入簡單快速接入可以參考介面api文件 參考api文件 注意 1 所有介面訪問位址和引數,都需區分大小寫,一定需注意。2 所有介面如有錯誤,前端都...

防止惡意呼叫API介面

1 驗證碼 最簡單有效的防護 採用點觸驗證,滑動驗證或第三方驗證碼服務,普通驗證碼很容易被破解 2 頻率,限制同裝置,同ip等傳送次數,單點時間範圍可請求時長 3 歸屬地,檢測ip所在地是否與手機號歸屬地匹配 ip所在地是否是為常在地 4 可疑使用者,對於可疑使用者要求其主動發簡訊 或其他主動行為 ...