前端代码安全与混淆(前端代码和后端代码在一起吗)
off999 2024-11-08 12:47 21 浏览 0 评论
作者:京东零售 周明亮
一、友商网页分析
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 语法糖】
- 关键的商详数据,需要强制进行登录操作,可以对账号进行封禁。
二、攻击者角度
- [Web逆向] 数某风控JS算法分析 常规网页加密调式
- Crack App | 某 H5 App 反调试对抗 反调式 APP 内 Webview
- Puppeteer 融入调试流程,调试体验爽翻了! 可模拟用户实际点击流程,进行流程化操作,此类方式,比较难以区分
- Node.js 安全最佳实践 常见的 Node JS 官方发布的被攻击类型。
- 参考:NodeJS 官网指导手册?
- 通过几行 JS 就可以读取电脑上的所有数据? 旁路攻击,通过内存响应速度获取用户密码信息
- ?Qwik JS 框架 将JS代码的拆分从常见的「编译时」(比如webpack分块)、「运行时」(比如dynamic import),变为「交互时」。只有用户操作时,才会进行注入加载。
- 实践:天猫汽车商详页的SSR改造实践 天猫汽车商详页,改造原理本质上是基于 Qwik JS 。
- 聊聊前端安全之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上触发了点击事件进行一些用户不知情的操作。
- AI 介入解释代码,加速代码反编译进程
- 比如将友商代码放入 chatgpt 进行释义
这个只是部分代码,如果将完整代码,一段一段进行分析,你就可以得到完整上下文,不需要靠人去一段一段读取代码。
目前还有 ai 代码调试如:
https://github.com/shobrook/adrenaline?
三、防御者角度
- JS 代码混淆
- 应对:普通开发者或者不懂编程的普通用户。实例:大部分网页
- 进行代码混淆/加密,减少语义化理解。
- 通过代码调试,查找特定 DOM 结点,反复断点调试,即可了解相关执行逻辑
- JS 虚拟机
- 应对:专业编程开发者。实例:暂无
- 通过 AST 转换 代码为二进制码,再通过虚拟机运行二进制码。
- 会导致网页执行性能变差,执行加载更多 JS 文件
- 无法进行断点提示,但是会把解密流程对外暴露。
- 直接调用 JS 虚拟机,执行最小化JS片段,从而了解整个虚拟机的加密规则。
- 强制下载 APP 通过 Webview 打开
- 应对:中高级编程开发者。实例如:拼多多等
- H5 代码只是对外展示数据,关键内容提示用户下载 APP,增加调试难度
- 用户不愿意下载APP,就会导致用户流失。
- 接口校验/字段混淆
- 应对:Python 爬虫类,实例如:淘宝、好词好句网等等
- 通过接口生成混淆模版,多字段随机发送,配置相关JS 模版框架。
- 接口内容传输 base64 / aes 加解密处理,但是会留下解密 JS 在客户端,依旧能够被破解。
- Token 强制校验,发送三次错误,直接不在返回数据,需要用户强制登录,容易导致用户流失。
- 自定义框架
- 应对: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。 比如:
?大家都可以自查下~
相关推荐
- ps软件官方免费下载电脑版免费
-
1:点击下载好的安装包先进行解压,然后点击“Photoshop_CS6_CHS_lite.exe”文件2:在弹开的界面中点击“自定义安装”,这里小编说明一下,如果用户选择“快速安装”的话,那么软件的安...
- 传奇盒子平台大全(传奇盒子赚钱)
-
在996传奇盒子中,会员玩家可以在“我的游戏”中通过“云玩”进入之前体验过的传奇游戏,开启挂机模式后,就能在“云多开”系统里观察到自己的云设备和正在进行云游戏状态的传奇游戏,如果点进手机后台,还能看到...
- pdf查看软件(查看pdf格式的软件)
-
pdf当然可以有查找功能:1、第一步:首先我们要使用WPSOffice打开PDF文档。2、第二步:我们需要依次点击“开始”--->“查找”(或使用快捷键“Ctrl+F”)。3、第三步:我们在查...
- 中国象棋下载安装(下载中国象棋官方版)
-
不用刻意下载个中国象棋APP,只需要下载一个QQ游戏,里头就有中国象棋玩了,里头点开后,自动下载,还可以连接其他玩家,一起玩,切磋棋艺。你这问题太模糊了。。。是你有一个象棋游戏,想放到桌面上,双击就可...
- 手机bt下载软件哪个好(手机有什么下载bt的软件)
-
磁力下载app推荐黑科技APP,这个好用黑科下载器APP也是一款功能强大且使用的下载类工具应用,它支持磁力以及种子文件的下载。还可以把下载的的文件转存到云盘,并支持在线的云播预览功能,无需等待能直接边...
- 狂野飙车9下载(狂野飙车9下载入口)
-
您可以在AppStore搜索“狂野飙车9”或者直接使用Safari等浏览器搜索“狂野飙车9官方下载”,进入官网下载页面,点击下载按钮并根据提示进行下载安装即可。在下载前请确保您的苹果设备已连接稳定...
-
- 免费相册视频制作软件(怎么把拍的照片做成视频)
-
电脑端1.会声会影会声会影上手简单而且做出的相册的效果也很不错,很适合新手使用,x7以前的版本都是可以自己去免费用的。2.premiere(pr)pr是一款比较专业的视频剪辑制作软件,用它来做电子相册也是很不错的,做出的效果很高大上,如果只...
-
2026-01-17 21:43 off999
- 图片文字修改神器免费(手机无痕修改图片文字软件)
-
首先区分是完整图片导入还是ai软件自己编写的文字,如果导入的图片无法修改,只能像ps一样去修图,如果是软件编写的,无法选取先要解锁,方法:上面任务栏对象-选择全部解锁。然后修改。修改方法:如果对方编组...
- 开户最忌三个证券公司(随便哪个证券公司开户都一样吗)
-
在不同的证券公司开户,确实存在一些区别。首先,不同的证券公司提供的交易品种和交易费用可能不同,有些公司可能提供更广泛的投资选择,而有些公司则可能提供更低的佣金率,这直接影响到您的投资成本和收益。其次,...
- 农行手机银行app下载(中国农业银行App下载)
-
自己下载的农行手机银行是能转账的,只是额度可能会要低一些,比如一类卡,在农行网点注册下载并开通手机银行,一天转账的额度是有十万,而自己下载注册开通的手机银行额度则只有5万,自己是可以下载农行手机银行是...
- 下载本机手机管家(手机管家华为专用版下载)
-
可以在手机的应用商店中下载就可以了你看看有没有办法把他弄到桌面上,比如刷新桌面,如果影响使用的话,建议恢复出厂设置吧,我以前也出现过这种情况,刷机之后就好了电脑管家目前是不支持手机终端登录的所以无法...
- 广州疫情最新消息(广州疫情最新消息通知)
-
当然可以,深圳去广州的交通发达也便捷,可以乘坐大巴车、火车、高铁、自驾车均可到达广州的各大客运站、火车站、城市地标,到站后还可以乘坐公交车、地铁、打车到你想去的目的地。 深圳...
- 大型网络游戏排行榜前十(目前大型网络游戏排行)
-
最热门的有很多的,每个人的标准都不一样的,但是只要自己喜欢就好,无有传齐所有职业都有四个被动技能,游侠的四个技能分别是:游猎者、梦魇、鹰眼术和原动力。作用分别是对减速单位额外造成伤害,暴击是额外提高伤...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
Python 批量卸载关联包 pip-autoremove
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
