
十一月一日凌晨两点,一家做合同初审的四人小团队,老板手机响了一声。是账单告警,当天消费跳到了平时的二十几倍。
这位老板姓陈,前一晚十一点刚把新版小程序提上去。为了赶时间,key(调用模型的凭证,一串以 sk- 开头的字符)没走后端,直接写进了小程序的前端代码里。
他打开后台,三小时里进来两万八千次调用,没有一次是自己人发的。天亮后他先做的事,是把这把 key 删掉。可那 426 块已经扣了。
他到现在没想明白:那串字符藏在代码里,别人是怎么拿到手的?
为什么会这样
一句话:小程序包是发到别人手机上的,能装就能拆。
像把仓库钥匙塞进快递盒一起寄出去。盒子到了客户手里,钥匙也跟着到了,拦不住。小程序包就是那个盒子,装进手机就是一份完整的压缩包。
拆包工具是现成的,免费,解开一个几兆的包只要几十秒。里面的代码会被压短,但字符串压不掉,sk- 开头那一段原样躺在里面。
陈老板把它写在了请求模型的那个函数里。他以为前端代码是自己的,其实它跟着每一台装了这小程序的手机走。
再说这 426 块怎么来的。一份合同进去六千个 token(模型眼里的字,一个汉字大约一个),出来四百个。
假设输入两块一百万字,输出八块一百万字。六千除一百万再乘二,零点零一二;四百除一百万再乘八,零点零零三二。一份合起来一分五。
平时一天一千二百份,十八块二。那一夜两万八千次,乘零点零一五二,四百二十五块六,凑整四百二十六。
他翻了日志才发现,那些请求每条都塞满了合同原文,用法跟他自己家一模一样。对方拿他的 key 当免费额度,跑的还是他最费钱的活。
key 一泄露,日志就是那个能倒着数的地方。每次调用的时间、来源地址、吃了多少 token,全在里面。
怎么解决

三条路,从最便宜的往上走。
- 把
key挪回后端。 改什么:小程序只调自己的服务器,服务器再拿key去调模型。改完差多少:包里再也找不到sk-,拆开只剩一堆接口名。花的是两个小时。 - 加一道用量告警,顺手定期换
key。 改什么:日消费超过平时两倍就发短信,key一个月换一次。改完差多少:这次要是告警设在一百块,他第半小时就能掐断,不必等到三小时后。花的是一个小时。 - 一把
key拆成几把,各带上限。 改什么:测试一把、线上一把,每把单独设日额度,再绑自家服务器地址。改完差多少:一把漏了另一把还在;日额度设三十块,最坏也就丢三十。花的是半天。
别踩的三个坑:坑一,把 key 藏进混淆代码当替代方案,混淆只改名字,字符串照样在。坑二,删了旧 key 不查用量,对方可能早备了别的手。坑三,告警只发给老板一个人,他睡了就没人接。
平台怎么管这些问题
这些事落到平台上,是六个功能串成一条线。
- 按应用发
key:一个应用一把,能单独停,停一把不影响别的应用。 - 额度封顶:按天按月设上限,到线就拒,不会一路跑到天亮。
- 来源限制:绑住自家服务器地址,别处来的请求直接拒掉。
- 用量看板:按小时看消费曲线,本来平的一条线突然竖起来,就是出事了。
- 异常告警:涨得太快、来源陌生、集中在凌晨,三种都能设通知。
- 调用日志:每次调用的时间、来源、
token数留底,事后能倒着数回来。
这些功能平时谁管,比功能本身更要紧。
- 谁能改规则:平台运维,一人一号,改额度、改地址白名单都留一条记录。
- 谁能批减免:客户成功负责人,凭日志确认是被盗用,可申请冲抵,要二级审批。
- 出事能不能倒查到人:能。每条日志带
key编号和时段,能定位到哪把、哪几小时。 - 告警发给谁:应用负责人加值班。夜里先发值班,十五分钟没人接就升级给负责人。
这笔钱值不值
掏钱的是这个团队自己。426 块,等于平时二十三天的量。
改后端两小时,按一小时八十块算(假设),一百六十块。这笔钱比一次泄露便宜一半多。
省下来的不只是钱。那次他们还停了半天服务,重新提审又等了两天,客户催了三回。
行业规则怎么管这件事
这条线没有专门的国家文件管 key,管它的是应用商店的上架检测。
微信团队在开放社区发过《安全课堂|关于小程序云AK/SK泄露漏洞》,2022 年 6 月 29 日。原文写得很直接:提审的小程序都要过安全检测,把密钥硬编码进代码或配置文件,反编译就能拿走。
阿里云百炼的《认证方式》文档(2026 年 10 月 13 日更新)给了三条:密钥不入代码仓库、按应用拆分、定期轮转。
这三条,陈老板那晚一条都没做。
陈老板第二天把 key 挪回后端,又给日消费设了三十块的顶。他说这 426 块买得不冤:一串字符放在谁手里,钱就从谁兜里走。
Token工厂:贰号token工厂
主流大模型 API token 统一接入、统一计费,改个地址就能用。
点这里看详情 →