OTP防重放攻擊

OTP本意是一次性口令,比如郵箱驗證碼,短信驗證碼,或者根據totp或者hotp生成的默認30秒一變的6位數字。
不過開發者要注意,必須要在驗證成功后失效那個驗證碼,不然就會導致重放攻擊。
對于郵箱驗證碼,服務器可將郵箱和驗證碼存入json數組中或redis中,驗證時查找匹配,成功則刪除該項,一般還應配置失效時間。
對于手機驗證碼,服務器要將手機號和驗證碼存入json數組中或redis中,驗證時查找匹配,成功則刪除該項,一般還應配置失效時間。
對于動態口令,則要采用另外的方式:
先準備一個歷史成功json數組,每項是一條json,包含用戶id,token,驗證時刻+禁止重復的時長
每驗證成功一條用戶和動態口令,則查數據是否有相同id,相同token并且驗證時間還在禁止時間段內,如果查到,則認定為重放攻擊,記錄日志,驗證不通過
如果沒有查到,那么如果該用戶歷史列表為空,則添加json記錄,否則更新替換記錄的token和驗證時刻+禁止重復時長。
注意一般動態口令驗證會有一個允許的窗口數,以平衡用戶時間和服務器時間的差異,這些前后窗口內的token值在當前驗證仍然是可以通過的,所以禁止重復時長至少要覆蓋之后的窗口時長。如果token時長是30秒,窗口是2,那么禁止重復時長應該設置為90秒。
如果用戶數量大,嫌內存空間占用多,可以考慮每次計算時刪除已經過期的條目,或者使用redis,在添加記錄時定義失效時間。

...
var loginfaillist=[];
var userotpsucclist=[];
...if (tokenValidates) {let histmatch=userotpsucclist.find(item=>((item.userid==matchuser.uid.toLowerCase())&&(item.token==obj.token)&&(item.invalid>now)))if (histmatch!=undefined) {addfail(now,clientip);logger.error("涉嫌重放攻擊 "+obj.email); errlog("涉嫌重放攻擊 "+obj.email);return res.json({ "msg":"涉嫌重放攻擊"});}histmatch=userotpsucclist.find(item=>(item.userid==matchuser.uid.toLowerCase()))if (histmatch==undefined) userotpsucclist.push({"userid":matchuser.uid.toLowerCase(),"token":"obj.token","invalid":now+200000})else { histmatch.token=obj.token; histmatch.invalid=now+200000; }loginfaillist=loginfaillist.filter(itm=>(itm.ip!=req.ip));logger.info("認證通過 "+matchuser.username+" "+clientip);res.json({"msg":"succ","userid":matchuser.uid.toLowerCase(),"username":matchuser.username});}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44261.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44261.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44261.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

徹底開源,免費商用,上海AI實驗室把大模型門檻打下來

終于,業內迎來了首個全鏈條大模型開源體系。 大模型領域,有人探索前沿技術,有人在加速落地,也有人正在推動整個社區進步。 就在近日,AI 社區迎來首個統一的全鏈條貫穿的大模型開源體系。 雖然社區有LLaMA等影響力較大…

從 ArcMap 遷移到 ArcGIS Pro

許多 ArcMap 用戶正在因 ArcGIS Pro 所具有的現代 GIS 桌面工作流優勢而向其遷移。 ArcGIS Pro 與其余 ArcGIS 平臺緊密集成,使您可以更有效地共享和使用內容。 它還將 2D 和 3D 組合到一個應用程序中,使您可以在同一工程中使用多個地圖和多個布局。 Arc…

【C++雜貨鋪】C++11新特性

目錄 🌈 前言🌈 📁 C11介紹 📁 統一初始化列表 📁 聲明 📂 auto 📂 decltype 📂 返回類型后置 📂 范圍for 📂 模板別名 📂 nullptr &#x1…

服務器使用PC作為代理訪問外網

1、PC上啟動代理,比如nginx 下載nginx:http://nginx.org/en/download.html 修改配置文件,在conf下: http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server…

六、 SpringBoot 配置?件 ★ ?

六、 SpringBoot 配置?件 本節?標1. 配置?件作?2. 配置?件快速??3. 配置?件的格式4. properties 配置?件說明4.1 properties 基本語法4.2 讀取配置?件4.3 properties 缺點分析 5. yml 配置?件說明5.1 yml 基本語法5.2 yml 使?進階5.2.1 yml 配置不同數據類型及 nul…

昇思25天學習打卡營第17天|文本解碼原理--以MindNLP為例

文本解碼就是根據當前已經輸入的內容不斷地預測下一個詞,前期通過大量的文本文章等輸入,讓模型學習好以后,根據已學習的內容,不斷預測下一個詞。就像鸚鵡學舌一樣你不斷的叫他說你好大帥哥,你好大帥哥。后面某一天&…

好用的源代碼加密軟件有哪些?5款源代碼防泄密軟件推薦

源代碼作為軟件產品的核心組成部分,其安全性直接關系到整個軟件系統的安全。源代碼的泄露可能導致企業的技術秘密暴露,商業競爭力下降,甚至可能引發經濟損失和法律責任問題。因此,對源代碼進行加密保護,已經成為企業不…

windows安裝啟動mysql8.0版本的簡單流程

1.下載mysql8.0.25版本 MySQL :: Download MySQL Community Server (Archived Versions) 2.解壓到D盤的mysql文件夾,并修改環境變量 配置環境變量: winr鍵>輸入control system>高級系統設置>點擊環境變量 雙擊path后,新建 將bin目錄粘貼進去,再點擊確定 在cmd命令行…

【JavaScript 報錯】未定義的變量或函數:Uncaught ReferenceError

🔥 個人主頁:空白詩 文章目錄 一、錯誤原因分析1. 變量未定義2. 函數未定義3. 塊級作用域問題 二、解決方案1. 確保變量已定義2. 確保函數已定義3. 正確使用塊級作用域 三、實例講解四、總結 在JavaScript開發中,Uncaught ReferenceError 是一…

C#使用異步方式調用同步方法的實現方法

使用異步方式調用同步方法,在此我們使用異步編程模型(APM)實現 1、定義異步委托和測試方法 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Task…

算法學習day10(貪心算法)

貪心算法:由局部最優->全局最優 貪心算法一般分為如下四步: 將問題分解為若干個子問題找出適合的貪心策略求解每一個子問題的最優解將局部最優解堆疊成全局最優解 一、擺動序列(理解難) 連續數字之間的差有正負的交替&…

Maven Nexus3 私服搭建、配置、項目發布指南

maven nexus私服搭建 訪問nexus3官方鏡像庫,選擇需要的版本下載:Docker Nexus docker pull sonatype/nexus3:3.49.0 創建數據目錄并賦權 sudo mkdir /nexus-data && sudo chown -R 200 /nexus-data 運行(數據目錄選擇硬盤大的卷進行掛載) …

mysql快速精通(五)數據庫備份與還原

主打一個實用 對于重要數據我們常常進行備份以應對突發情況,以下使用Navicat對數據進行備份,想了解sql語句的自尋 備份?? 還原??

自動化回復信息工具的開發分享!

在當今信息爆炸的時代,無論是個人還是企業,都面臨著大量的信息處理和回復工作,為了提高效率,自動化回復信息工具變得越來越重要。 本文旨在分享一個簡單但實用的自動化回復信息工具的五段源代碼開發過程,幫助讀者理解…

DNS正向解析,反向解析

目錄 一、正向解析 1.下載DNS軟件包 2.修改主配置文件 3.創建區域文件 4.配置DNS 5.測試 二、反向解析 1.修改主配置文件 2.創建區域文件 3.測試 一、正向解析 1.下載DNS軟件包 [rootwww ~]# yum indtall -y bind注意: 下載軟件前需要配置倉庫&…

DolphinScheduler本地安裝部署與遠程任務調度管理實踐應用

文章目錄 前言1. 安裝部署DolphinScheduler1.1 啟動服務 2. 登錄DolphinScheduler界面3. 安裝內網穿透工具4. 配置Dolphin Scheduler公網地址5. 固定DolphinScheduler公網地址 前言 本篇教程和大家分享一下DolphinScheduler的安裝部署及如何實現公網遠程訪問,結合內…

自動駕駛AVM環視算法--540度全景的算法實現和exe測試demo

參考:金書世界 540度全景影像是什么 540度全景影像是在360度全景影像基礎上的升級功能,它增加了更多的攝像頭來收集周圍的圖像數據。通常,這些攝像頭分布在車輛的更多位置,例如車頂、車底等,以便更全面地捕捉車輛周圍…

無人機游學技術及前景分析

一、技術概述 無人機,即無人駕駛飛行器,通過遠程控制或自主飛行控制系統進行操作。隨著科技的快速發展,無人機技術日益成熟,不僅廣泛應用于軍事偵察、打擊等領域,也逐漸滲透到民用市場,包括農業植保、影視…

PostgreSQL17索引優化之支持并行創建BRIN索引

PostgreSQL17索引優化之支持并行創建BRIN索引 最近連續寫了幾篇關于PostgreSQL17優化器改進的文章,其實感覺還是挺有壓力的。對于原理性的知識點,一方面是對這些新功能也不熟悉,為了盡可能對于知識點表述或總結做到準確,因此需要…

華為認證試題有題庫嗎?華為認證題庫怎么領取?

在競爭激烈的就業環境下,若你擁有華為認證將可以提高個人綜合能力,更好的適應行業變化。相信大家都有聽說過想考取華為初級認證并不困難,因為它有專門的題庫供考生備考。 那么,到底華為認證試題有題庫嗎?華為認證題庫要怎么領取…