安全审计公告

这里汇总平台最近一段时间的安全策略变更与第三方扫描器复核结果,便于商家与用户随时核对。 想看完整变更记录与回归测试细节的商家请前往商家中心 · 安全审计

  1. SECURITY DEFINER 函数权限收紧
    2026-06-15
    • 对 public 模式下的全部 SECURITY DEFINER 函数(30+ 个)从 anon / authenticated 收回 EXECUTE 权限。
    • 仅 service_role 可执行;所有调用必须通过受信任的服务端代码(supabaseAdmin)。
    • 新加入的 5 个台账触发函数同样按相同模板收紧。
    已验证
    Supabase Linter 0028/0029 警告复扫为 0。
  2. 新增账务双分录台账(ledger_entries)
    2026-06-15
    • RLS 仅允许商家读取自己 merchant_id 的行;anon/authenticated 无写权限,写入仅由触发器以 service_role 完成。
    • 充值、兑换、手续费、打款、月度结算等关键事件自动落账,可在商家后台『对账中心』查询并导出 CSV。
    已验证
    对账页合计借/贷应恒等,差额为 0。
  3. 停用模拟打款路径
    2026-06-15
    • process_pending_payouts() 不再生成假 txid,已改为 no-op 并仅授权 service_role。
    • 真实出金统一走 /api/public/cron/monthly-settlement → Bitget Spot Wallet Withdraw API;失败自动落库并支持后台重试。
    已验证
    DB 中已无任何来源为占位字符串的 payout_tx 新增记录。
  4. site_wallets 跨商家访问回归测试
    2026-06-15
    • 新增 tests/cross_merchant_leak.sql:以商家 B 的 JWT 身份执行 8 项 JOIN / 直查 / RPC 断言。
    • site_wallets / site_wallet_links / charges / ledger_entries / crypto_recharge_orders 均不可读取他商户数据。
    • site_wallet_view 等 SECURITY DEFINER RPC 直接抛 insufficient_privilege。
    已验证
    8/8 断言通过;可手工重复运行核验。
  5. 网站归属与迁移策略
    2026-06-14
    • 已验证域名全局唯一;迁移需原账号 + 新账号双重 OTP 并重置 API Secret。
    • 迁移成功后原账号收到邮件通知,并触发其余账号同域名 unverified 记录的自动清理。
    已验证
    merchant_sites 上的部分唯一索引强制约束。