使用場(chǎng)景
- 隨著互聯(lián)網(wǎng)的發(fā)展,短信驗(yàn)證已經(jīng)被廣泛使用哥牍,那么問(wèn)題也隨之而來(lái)惩歉,主要體現(xiàn)就在于短信轟炸,短信轟炸軟件調(diào)用了向指定用戶發(fā)送驗(yàn)證碼的接口裁奇,實(shí)現(xiàn)對(duì)攻擊目標(biāo)進(jìn)行短信轟炸騷擾的目的桐猬;那么問(wèn)題來(lái)了,短信轟炸軟件的接口哪里來(lái)的刽肠?很顯然溃肪,不會(huì)是軟件制作者自己掏錢買的,一般都是盜取各種企業(yè)短信發(fā)送服務(wù)的接口來(lái)實(shí)現(xiàn)的音五。
如何防止惫撰?
- 對(duì)手機(jī)號(hào)、IP躺涝、設(shè)備做一定的限制
- 加密自己的短信驗(yàn)證碼發(fā)送接口厨钻,盡量防止被別人拿到
- 學(xué)習(xí)企鵝,直接讓用戶自己發(fā)短信
- 增加一個(gè)授權(quán)過(guò)程
方法
- 第一種方法是常規(guī)坚嗜,有些短信服務(wù)器商已經(jīng)提供了這些服務(wù)
- 第二種方法其實(shí)屬于然并卵夯膀,接口總是會(huì)暴露的
- 第三種開(kāi)玩笑?你讓用戶自己發(fā)看苍蔬!
重點(diǎn)講第三種
從簡(jiǎn)單的說(shuō)就是在發(fā)送短信給用戶之前诱建,我們先做一套驗(yàn)證,如果驗(yàn)證通過(guò)了银室,再給用戶發(fā)送短信涂佃,這種辦法的好處是,你的請(qǐng)求短信的接口被別人知道了蜈敢,別人還得驗(yàn)證一次才能成功發(fā)送短信,增加了復(fù)雜度汽抚。
大概流程圖
簡(jiǎn)單說(shuō)下流程:
- 第一步在client端進(jìn)入發(fā)送短信的頁(yè)面請(qǐng)求第一個(gè)步驟抓狭,獲取一個(gè)驗(yàn)證碼,這個(gè)驗(yàn)證碼在服務(wù)器上生成造烁,并且存到Redis等緩存服務(wù)器中否过,用于下次請(qǐng)求短信時(shí)的校驗(yàn)。
- 第二步用戶填寫(xiě)服務(wù)器返回的驗(yàn)證碼并帶著驗(yàn)證碼請(qǐng)求服務(wù)器惭蟋,服務(wù)器拿著用戶提交過(guò)來(lái)的驗(yàn)證碼到緩存服務(wù)器去驗(yàn)證苗桂,看看驗(yàn)證碼是否存在,如果存在就生成一個(gè)短信驗(yàn)證碼告组,分別存儲(chǔ)到本地?cái)?shù)據(jù)庫(kù)煤伟,以及調(diào)用第三方短信發(fā)送接口,向用戶發(fā)送短信。
- 第三步用戶---收到短信---輸入短信碼---提交
問(wèn)題:
- 問(wèn):別人就不能拿到你獲取驗(yàn)證碼的接口便锨,請(qǐng)求了驗(yàn)證碼围辙,再用驗(yàn)證碼去發(fā)短信嗎?
答:生成驗(yàn)證碼后放案,服務(wù)器把驗(yàn)證碼轉(zhuǎn)換成圖片發(fā)回前臺(tái)姚建。
方便與安全:
- 很多情況下根據(jù)場(chǎng)景的不同,短信驗(yàn)證的需求也各不相同吱殉,比如說(shuō)登錄或者注冊(cè)的時(shí)候掸冤,驗(yàn)證碼需要可以被多次使用,而且時(shí)效需求要高一點(diǎn)友雳,又比如銀行支付等場(chǎng)景必須保證驗(yàn)證短信只能使用一次贩虾,時(shí)效無(wú)需太高。