卡小兔云铺指南禁售规则开店申请

卡密安全:防泄露、防超卖、防重复发货

更新于 2026-11 · 阅读约 7 分钟

虚拟商品店铺的亏损,很少是被攻击打穿的,多数来自三个低级但高频的漏洞:卡密在后台明文躺着、两个人同时买到最后一张卡、支付回调重试导致同一订单发了两次货。这三件事都能在不动核心系统的情况下修掉。

一、卡密存储:能加密就别明文

卡密是现金。明文存数据库意味着:一次数据库备份泄露、一个被注入的查询、一个离职员工导出的 CSV,都会变成直接损失。

二、库存扣减:一条 SQL 解决超卖

“先查库存、再更新库存”是超卖的经典成因。正确做法是让数据库在一句语句里完成判断与扣减:

UPDATE card_pool
SET used = used + 1
WHERE goods_id = ? AND used < total;

影响行数为 1 才算扣减成功,为 0 说明已被抢完,直接返回“库存不足”。任何“查—判—改”的三步写法,在并发下都会多卖。

三、发放幂等:同一订单只发一次

环节要求
回调入口以订单号 + 支付流水号为唯一键,重复回调直接返回成功不再发货
发放记录发货动作与“已发货”状态在同一事务内提交
对账任务定时补偿“已支付未发货”的订单,而不是靠人工发现

支付平台的异步通知会重试,网络抖动也会让前端重复提交。幂等不是优化,是底线。

四、访问控制:把后台当银行系统

  1. 后台不与店铺前台同域暴露,或至少加 IP 白名单/二次验证;
  2. 不同角色分权:客服能查订单但不能看明文卡密;
  3. 批量操作二次验证,例如一次导出超过 100 条需输入动态码;
  4. 登录失败次数限制 + 异常登录提醒。

五、日志与告警:出事能查、提前能防

六、失效与轮换

发现泄露的第一时间要做的是“作废”,不是“改密码”。因此卡密表需要支持按批次作废:

七、交付通道:别把卡密塞进聊天窗口

人工发货时用 IM 发卡密,等于把卡密永久留在第三方服务器上。正确做法是发一条带签名的订单查询链接,让买家自己登录查看,链接带有效期。

八、最小可用检查表

项目达标线
卡密加密存储是
库存扣减原子化是
发放幂等是
明文查看留痕是
低库存告警是
批次作废能力是

六项里缺两项以上,建议先补技术再放量推广——量越大,漏洞的代价越高。

卡小兔云铺默认提供卡密加密存储、原子扣减、回调幂等与低库存告警,后台明文查看全程留痕,商户不需要自己写这套逻辑。

→ 提交开店申请 或 看支付接入与掉单处理

想直接开店卖虚拟商品?卡小兔云铺提供自动发卡、卡密库与订单对账,人工审核开通,工作时间 2 小时内联系。提交开店申请 →