locoz
303 天前
你说的这种做法叫投毒/埋坑,属于早就被玩烂的操作了。
常见的操作有比如先获取一些浏览器环境中获取不到的信息,用于检测是否是真实浏览器,然后如果不正常就在生成的 sign 里打上特殊标记,或者是发个网络请求直接上报具体的环境信息,或者是打日志警告,或者是执行一些计算量超出正常水平的东西再执行原始逻辑之类的。玩法一堆,而且远比“删库”能恶心人。
“删库”这种极端操作的成功概率基本为 0 ,你也无法保证你不会影响到普通用户,再加上大点的安全厂商都会有做自动化的安全审计,检测到你搞骚操作就直接就给你标记风险了,毕竟谁知道你是想做防护还是想搞普通用户呢?
另外,你以为这种操作很无解,代码混淆了没人仔细分析就看不懂,但其实解析成 AST 之后处理一下冗余内容,代码结构是很清晰的。再加上现在的大语言模型上下文长度已经足够长了,能力完全够将清理后的逻辑部分代码还原出大致的原始状态,或者是直接按要求对代码进行自动化处理。无论是剥离出实际需要的部分,还是察觉出你整活,都极其简单,门槛极低。以前还得专门训练模型,现在花点小钱随便就能搞。
所以可以说在当下,在中低程度混淆处理的代码层面投毒/埋坑的意义已经不大了,代码层面的对抗主要还是在让别人无法正常分析代码上,比如几年前比较先进的技术是套一层“虚拟机”,逻辑完全按人家自己的来,后面发展出了基于 WASM 直接跑加壳后的编译后程序,再后面就是像楼上说的结合动态变化的处理方式高频更新。但是这些操作终究是前端代码层面做的事情,大不了别人完全虚拟一套环境搞,只要级别比你高,你代码里做再多操作也看不出毛病。
如果你平时有了解一些相关安全厂商做的事情的话,你会发现其实他们现在都在往行为风控方向发展。以前他们都会吹自己的验证码、WAF 之类的产品有多难被破解,代码加密、动态更新、高强度壳啥的。现在吹的都是通过识别客户端各方面的操作是否像真人发出的,然后进行分级风控,比如疑似风险客户端就必须要进行计算后才能走正常逻辑,通过大幅加高攻击方成本的方式来解决问题。