日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

面試官:如何防止短信盜刷和短信轟炸?

來源: 責編: 時間:2024-02-06 10:13:55 437觀看
導讀短信盜刷和短信轟炸是項目開發中必須要解決的問題之一,它的優先級不亞于 SQL 注入的問題,同時它也是面試中比較常見的一個經典面試題,今天我們就來看下,如何防止這個問題。1、概念介紹短信盜刷和短信轟炸的概念如下:短信盜

Xrv28資訊網——每日最新資訊28at.com

短信盜刷和短信轟炸是項目開發中必須要解決的問題之一,它的優先級不亞于 SQL 注入的問題,同時它也是面試中比較常見的一個經典面試題,今天我們就來看下,如何防止這個問題。Xrv28資訊網——每日最新資訊28at.com

1、概念介紹

短信盜刷和短信轟炸的概念如下:Xrv28資訊網——每日最新資訊28at.com

  • 短信盜刷是指使用某種技術手段,偽造大量手機號調用業務系統,盜取并發送大量短信的問題。這樣會導致短信系統欠費,不能正常發送短信,同時也給業務系統方,帶來了一定的經濟損失和不必要的麻煩。
  • 短信轟炸是指攻擊者利用某種技術手段,連續、大量地向目標手機號碼發送短信,以達到騷擾、干擾或消耗目標用戶的時間、流量與精力的目的。這種行為可能會對受害者造成騷擾、通信中斷和手機電量消耗過快等問題。

2、解決方案

短信盜刷和短信轟炸屬于一類問題,可以一起解決。但這類問題的解決,不能依靠某一種解決方案,而是多種解決方案共同作用,來預防此類問題的發生。Xrv28資訊網——每日最新資訊28at.com

這類問題的綜合解決方案有以下幾個:Xrv28資訊網——每日最新資訊28at.com

  • 添加圖形驗證碼:用戶發送短信前,需要先輸入正確的圖形驗證碼,或拖動驗證碼等驗證,驗證通過之后,才能正常發送短信驗證碼。因為圖形驗證碼的破解難度非常大,所以就避免了自動發送短信程序的執行。
  • 添加 IP 限制:對請求 IP 的發送次數進行限制,避免短信盜刷和短信轟炸的問題。例如,每個 IP 每天只能發送 10 條短信。
  • 開啟 IP 黑名單:限制某個 IP 短信發送功能,從而禁止自動發送短信程序的執行。
  • 限制發送頻次:一個手機號不能一直不停的發送驗證碼(即使更換了多個 IP 也不行),設置一個手機號,每分鐘內只能發送 1 次驗證碼;一小時之內,只能發送 5 次驗證碼;一天之內,只能發送 10 次驗證碼。
  • 開啟短信提供商的防控和報警功能:幾乎所有的短信提供商都提供了,異常短信的防控和提醒功能,開啟這些保護措施,可以盡可能的避免短信盜刷的問題。

具體實現如下。Xrv28資訊網——每日最新資訊28at.com

3、具體解決方案

(1)添加圖形驗證碼

圖形驗證碼的執行流程如下:Xrv28資訊網——每日最新資訊28at.com

當用戶點擊“發送短信驗證碼”的時候,前端程序請求后端生成圖形驗證碼,后端程序生成圖形驗證碼的功能,可以借助 Hutool 框架來生成,它的核心實現代碼如下:Xrv28資訊網——每日最新資訊28at.com

@RequestMapping("/getcaptcha")public AjaxResult getCaptcha(){    // 1.生成驗證碼到本地    // 定義圖形驗證碼的長和寬    LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(128, 50);    String uuid = UUID.randomUUID().toString().replace("-","");    // 圖形驗證碼寫出,可以寫出到文件,也可以寫出到流    lineCaptcha.write(imagepath+uuid+".png");    // url 地址    String url = "/image/"+uuid+".png";    // 將驗證碼存儲到 redis    redisTemplate.opsForValue().set(uuid,lineCaptcha.getCode());    HashMap<String,String> result = new HashMap<>();    result.put("codeurl",url);    result.put("codekey",uuid);    return AjaxResult.succ(result);}

上述執行代碼中有兩個關鍵操作:第一,生成圖形驗證碼,并返回給前端程序;第二,將此圖形驗證的標識(ID)和正確的驗證碼保存到 Redis,方便后續驗證。Xrv28資訊網——每日最新資訊28at.com

前端用戶拿到圖形驗證碼之后,輸入圖形驗證碼,請求后端程序驗證,并發送短信驗證碼。Xrv28資訊網——每日最新資訊28at.com

后端程序拿到(圖形)驗證碼之后,先驗證(圖形)驗證碼的正確性.如果正確,則發送短信驗證碼,否則,將不執行后續流程并返回執行失敗給前端,核心實現代碼如下:Xrv28資訊網——每日最新資訊28at.com

// redis 里面 key 對應的真實的驗證碼String redisCodeValue = (String) redisTemplate.opsForValue().get(user.getCodeKey());// 驗證 redis 中的驗證碼和用戶輸入的驗證碼是否一致if (!StringUtils.hasLength(redisCodeValue) || !redisCodeValue.equals(user.getCheckCode())) {    // 驗證碼不正確    return AjaxResult.fail(-1, "驗證碼錯誤");}// 清除 redis 中的驗證碼redisTemplate.opsForValue().set(userInfoVO.getCodeKey(), "");// 請求短信 API 發送短信業務......

(2)添加 IP 限制

IP 限制可以在網關層 Spring Cloud Gateway 中實現,在 Gateway 中使用全局過濾器來完成 IP 限制,核心實現代碼如下:Xrv28資訊網——每日最新資訊28at.com

@Componentpublic class IpFilter implements GlobalFilter {    @Override    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {        // 獲取請求 IP        String ip = exchange.getRequest().getRemoteAddress().getAddress().getHostAddress();        Long count = redisTemplate.opsForValue().increment(ip, 1); // 累加值        if(count >= 20){ // 大于最大執行次數            redisTemplate.opsForValue().decrement(ip, 1); // 變回原來的值            // 終止執行            response.setStatusCode(HttpStatus.METHOD_NOT_ALLOWED);            return response.setComplete();        }        redisTemplate.expire(ip, 1, TimeUnit.DAYS); // 設置過期時間        // 執行成功,繼續執行后續流程        return chain.filter(exchange);    }}

其中,訪問次數使用 Redis 來存儲。Xrv28資訊網——每日最新資訊28at.com

(3)開啟 IP 黑名單

IP 黑名單可以在網管層面通過代碼實現,也可以通過短信提供商提供的 IP 黑名單來實現。Xrv28資訊網——每日最新資訊28at.com

例如,阿里云短信提供的 IP 黑名單機制,如下圖所示:Xrv28資訊網——每日最新資訊28at.com

Xrv28資訊網——每日最新資訊28at.com

Xrv28資訊網——每日最新資訊28at.com

通過以上設置之后,我們就可以將監控中有問題的 IP 設置為黑名單,此時 IP 黑名單中的 IP 就不能調用短信的發送功能了。Xrv28資訊網——每日最新資訊28at.com

PS:網關層面實現 IP 黑名單,可以參考添加 IP 限制的代碼進行改造。Xrv28資訊網——每日最新資訊28at.com

(4)限制驗證碼的發送頻次

驗證碼的發送頻次,可以通過網關或短信提供商來解決。以阿里云短信為例,它可以針對每個手機號設置每分鐘、每小時、每天的短信最大發送數,如下圖所示:Xrv28資訊網——每日最新資訊28at.com

Xrv28資訊網——每日最新資訊28at.com

當然,這個值也可以人為修改,但阿里云短信每天單個手機號最多支持發送 40 條短信。Xrv28資訊網——每日最新資訊28at.com

(5)開啟短信提供商的防控和報警功能

短信提供商通常會提供防盜、防刷的機制。例如,阿里短信它可以設置短信發送總量閾值報警、套餐余量提醒、每日/每月發送短信數量限制等功能,如下圖所示:Xrv28資訊網——每日最新資訊28at.com

Xrv28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-74675-0.html面試官:如何防止短信盜刷和短信轟炸?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: DartVM GC 深度剖析

下一篇: 關于 Next.js ,你不知道的事情

標簽:
  • 熱門焦點
  • Mate60手機殼曝光 致敬自己的經典設計

    8月3日消息,今天下午博主數碼閑聊站帶來了華為Mate60的第三方手機殼圖,可以讓我們在真機發布之前看看這款華為全新旗艦的大致輪廓。從曝光的圖片看,Mate 60背后攝像頭面積依然
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • 共享單車的故事講到哪了?

    來源丨??素斀浥c共享充電寶相差不多,共享單車已很久沒有被國內熱點新聞關照到了。除了一再漲價和用戶直呼用不起了。近日多家媒體再發報道稱,成都、天津、鄭州等地多個共享單
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨家獲悉,拼多多在其APP內上線了&ldquo;本地生活&rdquo;入口,位置較深,位于首頁的&ldquo;充值中心&rdquo;內,目前主要售賣美食相關的
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁&ldquo;充值中心&rdquo;入口上線了本機生活界面。壹覽商業發現,該界面目前主要
  • 造車兩年股價跌六成,小米的估值邏輯變了嗎?

    如果從小米官宣造車后的首個交易日起持有小米集團的股票,那么截至2023年上半年最后一個交易日,投資者將浮虧59.16%,同區間的恒生科技指數跌幅為52.78%
  • 華為和江淮汽車合作開發百萬元問界MPV?雙方回應來了

    8月1日消息,郭明錤今天在社交平臺發文稱,華為正在和江淮汽車合作,開發售價在100萬元的問界MPV,預計在2024年第2季度量產,銷量目標為上市首年交付5萬輛。
  • 華為Mate60系列模具曝光:采用碩大圓形后置相機模組+拼接配色方案

    據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將迎來更新,有望在9-10月份帶來全新的華為Mate60
Top 主站蜘蛛池模板: 枝江市| 琼海市| 上高县| 克什克腾旗| 丽江市| 开阳县| 广汉市| 德安县| 井陉县| 霞浦县| 东莞市| 秀山| 怀安县| 兴文县| 玛多县| 历史| 集安市| 武乡县| 辽源市| 柏乡县| 太谷县| 莎车县| 隆子县| 迭部县| 山西省| 德安县| 阿坝| 青神县| 横峰县| 靖江市| 长阳| 金塔县| 萍乡市| 德令哈市| 政和县| 林芝县| 曲沃县| 北宁市| 合川市| 勐海县| 邢台市|