前端代码安全与混淆

这篇具有很好参考价值的文章主要介绍了前端代码安全与混淆。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:京东零售 周明亮

一、友商网页分析

1.1 亚马逊

亚马逊商详地址:
https://www.amazon.com/OtterBox-Commuter-Case-iPhone-Packaging

前端代码安全与混淆

  • 所有交互事件在页面初始化时,不进行下发,等待通过 js 请求后下发 具体点击事件js内容
  • 采用自执行方式,防止代码格式化。【无法调用 Chrome 自带的代码格式化工具】
  • 采用自研式框架,非传统 react / vue / angular。大量通过 data-xx 标签进行数据传递,导致标签结构较为复杂。

前端代码安全与混淆

1.2 淘宝

主要配合接口进行加密,采用多字段干扰,模板化加载。下发大量的模版数据,之后通过客户端进行填充。

前端代码安全与混淆

客户端代码为传统的普通加密模式

前端代码安全与混淆

1.3 拼多多

  • 传统普通加密方式,使用 React 框架。【有明显的 React 语法糖】
  • 关键的商详数据,需要强制进行登录操作,可以对账号进行封禁。

前端代码安全与混淆

前端代码安全与混淆

二、攻击者角度

  1. [Web逆向]数某风控JS算法分析 常规网页加密调式
  2. Crack App| 某 H5 App 反调试对抗 反调式 APP 内 Webview
  3. Puppeteer融入调试流程,调试体验爽翻了! 可模拟用户实际点击流程,进行流程化操作,此类方式,比较难以区分
  4. Node.js 安全最佳实践常见的 Node JS 官方发布的被攻击类型。
  • 参考:NodeJS 官网指导手册
  1. 通过几行 JS 就可以读取电脑上的所有数据?旁路攻击,通过内存响应速度获取用户密码信息
  2. Qwik JS框架将JS代码的拆分从常见的「编译时」(比如webpack分块)、「运行时」(比如dynamic import),变为「交互时」。只有用户操作时,才会进行注入加载。
  3. 实践:天猫汽车商详页的SSR改造实践 天猫汽车商详页,改造原理本质上是基于 Qwik JS 。
  4. 聊聊前端安全之CSRF
  • 非代码泄漏类,常规类型Web 攻击,基于代码破解后
  • XSS攻击:跨站脚本攻击(Cross-Site Scripting),攻击目标是为了盗取存储在客户端的cookie或者其他网站用于识别客户端身份的敏感信息。一旦获取到合法用户的信息后,攻击者甚至可以假冒合法用户与网站进行交互。
  • CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。
  • 网络劫持攻击,主要是通过一些代理服务器,或者wifi等有中间件的网络请求,进行劫持,不法分子通过这种方式获取到用户的信息。
  • 控制台注入代码,不法分子通过各种提示诱骗用户在控制台做一些操作,从而获取用户信息。
  • 钓鱼攻击,
  • 电子邮件钓鱼:群发邮件,欺骗用户点击恶意的链接或附件,获取有价值的信息
  • 网站钓鱼:在网站上伪造一个网站,通常是模仿合法的某个网站。为了欺骗用户点击这个网站还会采取些辅助技术,比如钓鱼邮件、短信、电话
  • 防钓鱼
  • SPF记录,SPF是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录,它用于登记某个域名拥有的用来外发邮件的所有IP地址。
  • SafeBrowsing API,谷歌的一个随时可以通过互联网访问的API,允许允许浏览器在渲染之前检测URL的正确性。
  • DDOS:分布式拒绝服务攻击(Distributed Denial of Service),简单说就是发送大量请求是使服务器瘫痪
  • SQL注入攻击,通过对web连接的数据库发送恶意的SQL语句而产生的攻击,从而产生安全隐患和对网站的威胁,可以造成逃过验证或者私密信息泄露等危害
  • 点击劫持,点击劫持是指在一个Web页面中隐藏了一个透明的iframe,用外层假页面诱导用户点击,实际上是在隐藏的frame上触发了点击事件进行一些用户不知情的操作。
  1. AI 介入解释代码,加速代码反编译进程
  • 比如将友商代码放入 chatgpt 进行释义

前端代码安全与混淆

前端代码安全与混淆

这个只是部分代码,如果将完整代码,一段一段进行分析,你就可以得到完整上下文,不需要靠人去一段一段读取代码。

目前还有 ai 代码调试如:
https://github.com/shobrook/adrenaline

三、防御者角度

  1. JS 代码混淆
  • 应对:普通开发者或者不懂编程的普通用户。实例:大部分网页
  • 进行代码混淆/加密,减少语义化理解。
  • 通过代码调试,查找特定 DOM 结点,反复断点调试,即可了解相关执行逻辑
  1. JS 虚拟机
  • 应对:专业编程开发者。实例:暂无
  • 通过 AST 转换 代码为二进制码,再通过虚拟机运行二进制码。
  • 会导致网页执行性能变差,执行加载更多 JS 文件
  • 无法进行断点提示,但是会把解密流程对外暴露。
  • 直接调用 JS 虚拟机,执行最小化JS片段,从而了解整个虚拟机的加密规则。
  1. 强制下载 APP 通过 Webview 打开
  • 应对:中高级编程开发者。实例如:拼多多等
  • H5 代码只是对外展示数据,关键内容提示用户下载 APP,增加调试难度
  • 用户不愿意下载APP,就会导致用户流失。
  1. 接口校验/字段混淆
  • 应对:Python 爬虫类,实例如:淘宝、好词好句网等等
  • 通过接口生成混淆模版,多字段随机发送,配置相关JS 模版框架。
  • 接口内容传输 base64 / aes 加解密处理,但是会留下解密 JS 在客户端,依旧能够被破解。
  • Token 强制校验,发送三次错误,直接不在返回数据,需要用户强制登录,容易导致用户流失。
  1. 自定义框架
  • 应对:Python 爬虫类,中高级编程开发者。实例如:亚马逊/淘宝。【还需要继续挖掘】
  • 爬虫无法第一时间获取相关按钮的 API 请求接口,需要等待 JS 返回。
  • 客户端存在大量无关数据,导致 dom 结点整体看起来无规律
  • JS 通过 接口请求返回,配合相关的 Token 参数,可以达到随机性下发

四、结论

4.1 大部分攻击者共同点

1)自身不愿意登录,或者偷取正常用户信息后,用于攻击

  • 如一些外挂程序,免费提供给外部用户,用户贪图小利,以为可以通过外部程序加快抢利
  • 实则被记录用户名,给到攻击者使用。

2)如果是公司行为,很可能会被记录IP,有法务风险。

  • 可以分析电脑名称,IP 地址
  • 可能会进行 IP 服务器代理,采用虚拟 IP,虚拟定位
  • 使用云服务器,如:阿里云 / 京东云,进行攻击相应的网站,京东云到京东网站。

3)多次进行尝试修改 token ,伪装发送请求

  • 伪造 UA
  • 开启调试模式

4)分析 DOM 结构特征 / 使用 Console 打印全局存储变量

5)通过 cookies 分析特定的关键词,全局搜索

6)网络请求时,查看函数执行栈,逐级往下寻找核心请求函数。

4.2 应对普通开发者外挂程序

  • 主要采用 puppeteer 就可以完全模拟用户操作流程,可以进行等待某个节点出现,之后再进行操作,不再需要传统的代码调试操作。直接操作 DOM 结点点击响应
  • 基于此类需求,需要经常变更 DOM 结点位置。增加业务方成本,每次都需要发版。如果是随机生成结点特征,需要开发自研框架,成本较高

4.3 应对Pyhton爬虫

1)前端代码采用传统加密方式

  • https://github.com/mishoo/UglifyJS
  • https://github.com/terser/terser
  • https://github.com/javascript-obfuscator/javascript-obfuscator
  • 更多倾向于 接口 加密方式,加固加 Token

2)入口在 APP 内的 业务

  • 本身调试需要需要额外链接机器,提高调试复杂度。
  • 配合 APP 自身监控,特定API 可以做到更加安全
  • 也只有此类业务,可以采用 JS 虚拟机方式

3)对关键词进行混淆处理,减少特征搜索

  • 可采用下面方式,只是举例,可以有更多方式。比如数组组合,对象组合等等
  • const GLOBAL_SOCKET_NAME = 'c6on6ne6ct'.concat('S6o').concat('c6ke6t').replace(/6/g, '')
  • 常规代码混淆中,对完整字符串,不会进行处理,导致会直接暴露关键字。

任何客户端加密混淆都会被破解,只要用心都能解决,我们能做的就是拖延被破解的时间,而不是什么都不做,那样只会被破解更快!

其实很多我们自己公司对外的页面,都有很多外露风险,包括不规范的日志输出,直接对外暴露加密的防刷 token。 比如:

前端代码安全与混淆

大家都可以自查下~文章来源地址https://www.toymoban.com/news/detail-411242.html

到了这里,关于前端代码安全与混淆的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 案例:模拟京东秒杀倒计时(完整代码)【前端实现】

    目录 实现效果  案例分析 代码分析 代码实现 (完整) 背景图片引用   实现效果  案例分析  1.倒计时是不断变化的 所以需要一个定时器( setInterval )  2.三个盒子通过 innerHTML 进行赋值 放入时分秒  3.使用 Date() 对象获取当前时间(时间戳)  4.传递参数获取活动开始的时间

    2024年02月09日
    浏览(49)
  • HTML+CSS仿写京东页面附代码(web前端大作业)

    学习前端时间不多,看了两晚上就开始赶实训作业,大家看看就行 先来看看效果:         相关资源可以在主页资源查看

    2024年02月11日
    浏览(54)
  • .NET安全对抗 | 利用de4dot解密被混淆的.NET代码

    由dotNet安全矩阵星球圈友们组成的微信群里大家伙常常聊着.NET话题,这不今天有个群友下午1:06分抛出反编译后还是混淆的代码,那么肯定需要加密后获取正常的.NET代码,笔者1:35看到后快速响应私聊了这位师傅,拿到需要解密的DLL,大约45分钟后2:20左右解密成功,此文主

    2024年01月16日
    浏览(45)
  • web前端大作业_Html5+CSS3+JS原生项目_京东商城首页 详细代码

    index.html css index.css js index.js 效果图如下:            

    2024年02月11日
    浏览(58)
  • 代码混淆与反混淆学习-第二弹

    deflat脚本链接:GitHub - cq674350529/deflat: use angr to deobfuscation 这里以代码混淆与反混淆学习-第一弹中的OLLVM 混淆样本为例进行去除。【LLVM-4.0】 控制流平坦前 控制流平坦后 python deflat.py --file main-bcf --addr 0x401180 deflat.py 成功去除后效果: 去混淆后,效果还算可以,能分析程序流程

    2023年04月09日
    浏览(68)
  • 前端代码常见的安全缺陷(一)

    目录 1、使用不安全的target blank 问题描述: 修复建议: 2、Javascript 代码劫持 问题描述: 修复建议: 示例: 3、跨站请求伪造 问题描述: 修复建议: 4、遗留的调试代码 问题描述: 修复建议: 5、HTML页面中包含硬编码域名 问题描述: 修复建议: 6、密码管理:null 密码 问

    2024年04月25日
    浏览(29)
  • android 混淆规则作用,Android代码混淆详解

    一、混淆的意义 混淆代码并不是让代码无法被反编译,而是将代码中的类、方法、变量等信息进行重命名,把它们改成一些毫无意义的名字,同时也可以移除未被使用的类、方法、变量等。 所以直观的看,通过混淆可以提高程序的安全性,增加逆向工程的难度,同时也有效

    2024年03月09日
    浏览(50)
  • 前端沙箱,构建安全的代码执行环境

    在如今前端 Web 开发领域,安全性已经成为了一个不可忽视的重要议题。随着前端技术的不断演进,越来越多的应用需要在客户端执行各种复杂的代码。然而,这种能力的提升也带来了安全风险,尤其是当需要执行来自第三方或用户的不可信代码时。为了解决这个问题,前端

    2024年04月09日
    浏览(42)
  • 如何批量修改 GitHub 代码提交作者

    批量修改 GitHub 代码提交作者需要进行以下步骤: 该操作如果涉及default分支的话 请确保有push的权限! 首先,你需要 clone 远程仓库到本地,使用以下命令: 进入到克隆下来的代码库目录,使用以下命令查看所有提交记录: 使用以下命令将要修改的提交记录的作者和邮箱修改

    2024年02月08日
    浏览(45)
  • uniapp一键发行代码并混淆代码

    安装完成后,javascript-obfuscator就是一个独立的可执行命令了。 小程序发行后代码会自动打包到unpackage/dist/build文件中(生产环境) unpackage/dist/dev文件是发行旁边的运行按钮打包出来的文件(开发环境) 1.在自己项目根目录下创建一个build.bat脚本文件(最好是在unpackage/dist文件

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包