
前言V1.0 基线版本业务流程可以跑通但底层安全机制存在明显短板云函数信任前端传入的身份参数缺少真正独立的会话管理RBAC 权限只是表层 UI 控制后端缺少强制拦截密码、日志、文件上传、数据脱敏多处存在安全隐患。 V1.0.1 迭代的 P0 最高优先级工作就是整套安全体系重构。本篇聚焦云开发 B 端项目的安全实战全部来自项目真实安全审查与整改记录不涉及业务 UI、财务流程 Bug财务业务已经在 4‑7 篇完成复盘。 对于云开发 B 端系统很多开发者把权限控制只做在前端页面认为 “菜单隐藏就是权限控制”而真实安全防护需要做到前端 UI 拦截、云函数接口鉴权、数据库行级过滤的三重 RBAC 防护。本篇会还原旧版本安全缺陷、现象、根因、整改方案同时沉淀云开发 B 端后台可复用的安全编码规范。案例 1旧鉴权缺陷 — 云函数信任前端传入角色参数可抓包伪造身份越权踩坑前认知误区前端页面已经做了菜单、按钮权限控制云函数直接读取前端上传callerRole、callerUserId、callerDesignerId就可以完成身份校验。业务场景PC 后台、小程序管理后台调用管理类云函数。现象复现登录一个低权限账号运营 / 设计师抓包修改请求体里面的callerRole伪造为超级管理员重新发送请求云函数直接采信前端传的角色身份实现越权执行高权限操作新增角色、重置别人密码、读取全部财务数据。原有代码虽然写了enforceAdminRBAC鉴权函数但是鉴权逻辑依旧来源于前端传入参数属于软防护可以被绕过。根因分析没有独立的会话存储集合身份完全依赖前端请求携带的字段云函数没有从后端会话集合解析真实登录身份混淆「前端展示用身份」和「鉴权用真实身份」前端任何入参都不可信。整改方案新增custom_sessions会话集合用户登录成功后端生成32‑64 位随机十六进制 token写入会话表记录 accountId、role、designerId、permissions、expireAt 过期时间、revoked 作废标记所有管理云函数只信任请求携带的token全部通过parseAdminSession从数据库会话表解析真实登录身份完全丢弃、不采信前端上传的 callerRole /callerUserId/callerDesignerId前端携带的这些字段仅用于页面渲染展示不参与任何鉴权判断重构enforceAdminRBAC公共鉴权中间件每一个 custom_admin_* 云函数入口第一行调用该方法完成 token 校验、身份解析、权限码校验会话有效期固定 24 小时登出、改密码、账号禁用时批量 revoke 作废该账号全部历史 token旧 token 直接失效。开发落地规范云开发 B 端后台铁律所有后台鉴权身份必须由后端数据库会话解析获得永远不采信前端请求传入的身份字段。前端任何参数都可以抓包篡改不能作为安全依据。案例 2权限模块存在提权漏洞普通账号可以创建 / 修改超级管理员角色踩坑前认知误区只要页面隐藏角色编辑入口普通账号就无法操作角色权限。业务场景权限管理云函数custom_admin_perms_main负责角色、后台账号的增删改查。现象复现低权限账号抓包直接调用角色新增接口可以创建超级管理员角色也可以把自己账号的角色修改为超级管理员完成权限提权。根因分析角色、账号编辑接口内部没有校验操作者自身的角色身份没有增加 “禁止提升自身权限” 的防护逻辑。整改方案在角色新增、编辑、删除、账号重置密码接口增加强校验只有超级管理员才允许执行这类操作增加规则操作者不允许把自己账号权限提升到比当前更高等级不允许删除 / 降级超级管理员角色权限变更的每一次操作后端自动写入审计日志记录操作人、变更前后内容。开发落地规范高危权限管理接口除了 RBAC 权限码校验额外增加业务硬编码防护防止权限码配置失误造成提权风险。案例 3登录密码校验兼容明文比对账号密码存在泄露风险缺少登录暴力破解防护踩坑前认知误区只要前端密码加密再传给后端数据库存密文就足够安全。业务场景后台账号登录、密码校验逻辑。现象复现数据库内如果残留历史明文密码记录旧版校验逻辑支持明文直接比对登录没有登录失败锁定攻击者可以无限次暴力猜密码。根因分析verifyPassword函数保留明文密码比对分支没有密码错误计数、账号锁定机制。整改方案删除明文密码直接比对分支统一使用加盐哈希方式校验密码提供迁移脚本批量把历史明文密码升级为哈希存储登录时如果检测到历史明文密码登录成功的同时自动升级为哈希新增custom_login_attempts登录尝试记录表密码连续输错 5 次账号锁定 15 分钟锁定期间无论密码对错均拒绝登录每一次登录成功 / 失败写入登录日志记录 ip、时间、结果。开发落地规范禁止数据库存储明文密码后台账号必须具备暴力破解防护登录行为全部留日志。案例 4操作日志接口对外开放可由前端伪造审计记录日志失去溯源能力踩坑前认知误区提供一个日志写入云函数前端页面发生操作就调用接口写日志就可以完成审计留痕。业务场景系统操作审计日志记录退款、改权限、订单重大变更。现象复现前端可以直接调用日志新增云函数自己伪造 operatorId、operatorName、操作内容写入虚假操作记录出现故障的时候日志无法作为真实溯源凭证。根因分析把写日志的能力开放给前端操作人、操作内容由前端传入。整改方案删除对外开放的日志写入云函数所有操作日志只能在各个业务云函数的内部代码中生成操作人账号、角色全部从已经解析完成的 session 会话对象获取完全不接收前端传入 operator 相关字段日志集合设置权限约束业务系统只允许新增记录禁止更新、删除历史日志历史审计记录不可篡改。开发落地规范审计日志属于安全溯源数据写日志逻辑必须放在后端业务内部绝对不能开放给前端调用。案例 5短信验证码接口无限流验证码明文返回接口响应存在短信轰炸、泄露风险踩坑前认知误区前端按钮做倒计时就可以防止短时间重复发送验证码。业务场景后台找回密码、短信验证接口。现象复现抓包绕过前端倒计时高频调用短信发送接口实现短信轰炸接口响应体内直接返回验证码明文抓包即可拿到验证码。根因分析限流逻辑只做在前端验证码明文返回给客户端。整改方案后端增加限流规则同一个手机号 60 秒最多发送 1 条单日最多 10 条结合 openid 二次限制验证码只保存在数据库接口返回仅提示 “发送成功”响应体绝不返回验证码原文验证码设置 5 分钟有效期校验的时候同时比对手机号、验证码、过期时间三重条件。开发落地规范所有限流逻辑必须后端实现前端倒计时只是用户体验不能当做安全防护。验证码禁止在 http 响应中返回。案例 6文件上传缺少后端校验可上传恶意脚本文件设计师数据隔离存在漏洞踩坑前认知误区前端限制图片后缀、大小就可以控制上传内容。业务场景素材库上传、售后工单聊天图片上传。现象复现抓包绕过前端校验上传 exe/js/html 等非媒体文件设计师账号部分接口没有做归属校验可以读取不属于自己的订单、方案数据。根因分析文件类型、大小校验只写在前端后端没有二次校验设计师行级数据隔离不全部分读取、修改接口缺失checkDesignerScope归属校验。整改方案后端校验上传文件仅允许 jpg/png/webp/mp4单文件最大 5MB单次批量上传最多 9 张补齐设计师全部业务接口的归属校验封装checkDesignerScope公共函数所有读取 / 修改订单、方案、工单、消息接口执行归属校验列表查询直接在数据库查询条件拼接设计师 Id 做行级过滤设计师即使抓包传入其他设计师 orderId后端查询条件直接过滤拿不到别人单据。开发落地规范文件上传校验、行级数据隔离后端必须兜底前端校验仅做体验。设计师数据隔离不能靠前端隐藏列表必须在数据库查询层过滤。案例 7客户手机号等敏感隐私信息未分级脱敏内部账号可批量获取完整手机号踩坑前认知误区页面简单把手机号替换成星号展示就完成脱敏。业务场景客户列表、客户详情、Excel 导出客户数据。现象复现运营、设计师账号页面虽然展示脱敏手机号但是抓包接口响应可以拿到完整原始手机号导出 Excel 也导出完整手机号。根因分析脱敏只做在前端页面渲染接口返回原始手机号没有做后端层面的权限判断。缺少client:phone:view独立权限码。整改方案新增权限码client:phone:view仅超级管理员、财务账号拥有该权限后端封装maskPhone脱敏工具云函数返回客户数据时判断当前账号权限没有权限后端直接返回脱敏后的手机号字符串Excel 导出逻辑同样复用该权限无权限账号导出文件内手机号自动脱敏。开发落地规范敏感数据脱敏必须在后端接口输出层完成禁止接口返回明文靠前端页面打星号做脱敏。案例 8高危操作缺少二次密码校验退款、重置密码可以直接执行踩坑前认知误区只要角色权限控制正确高敏感业务不需要再次验证操作者身份。业务场景退款审核、重置后台账号密码、删除角色等高危操作。现象复现账号一旦登录成功就可以直接执行退款、重置他人密码没有二次身份确认如果账号被盗用直接执行高危资金操作。根因分析缺少敏感操作二次验密机制。整改方案封装verifyReauthPassword公共工具函数退款审核、重置密码、删除角色等高危操作必须传入当前登录账号的登录密码后端校验密码哈希校验通过才执行业务密码校验失败直接拦截操作二次验密校验逻辑完全运行在云函数前端弹窗只是收集密码输入校验不交给前端。开发落地规范涉及资金、账号权限变更的高危操作增加后端二次密码校验提升账号被盗之后的操作门槛。本篇小结本篇复盘 V1.0.1 整套底层安全体系的重构一共 8 大类真实安全缺陷。 云开发 B 端后台很容易踩的共性安全误区将鉴权、限流、文件校验、脱敏全部依赖前端实现信任前端传入的身份、角色参数缺少独立后端会话体系审计日志交给前端写入日志可伪造行级数据隔离只做前端过滤数据库查询层没有做强制过滤高危操作只靠角色权限缺少二次身份确认密码、验证码这类敏感逻辑防护只在前端实现。本项目最终落地三重 RBAC 防护模型前端层菜单隐藏、按钮置灰仅作为用户体验防护不承担安全云函数接口层token 会话解析、权限码校验、高危操作二次验密数据库层行级数据过滤、敏感字段后端脱敏、日志禁止删除更新。重要三重防护缺一不可只做好其中一层系统依旧存在安全漏洞。下一篇预告第九篇花艺定制 SaaS全项目历程复盘、测试回归验收、实战深度总结连载目录汇总《云开发实战手记花艺定制 SaaS 门店管理系统》专栏目录第一篇花艺定制 SaaS产品需求总览C 端小程序 PC 商家后台第二篇花艺定制 SaaS系统分层架构、业务流程总览第三篇花艺定制 SaaSC 端小程序 PC 后台分角色分页面功能清单第四篇花艺定制 SaaSVue3‑PC 商家后台全量踩坑复盘业务 Bug 云函数对接工程实战第五篇花艺定制 SaaS两端数据联动踩坑复盘・上篇订单、需求、方案、设计师档期同步第六篇花艺定制 SaaS两端数据联动踩坑复盘・下篇售后工单、佣金分销、统计报表第七篇花艺定制 SaaS核心业务流程重构踩坑复盘退款审核、会员折扣、佣金冲减改造第八篇花艺定制 SaaS底层安全鉴权重构RBAC 三重权限、会话体系加固实战第九篇花艺定制 SaaS全项目历程复盘、测试回归验收、实战深度总结