数据安全需要贯穿需求、设计、编码、测试、部署、运维、销毁完整软件生命周期,覆盖数据采集、传输、存储、使用、共享、销毁全链路,同时兼顾技术、流程、合规、人员管理。
一、需求与规划阶段:把安全前置(安全左移)
数据分级分类 对业务数据划分等级:公开数据、内部数据、敏感数据(手机号、身份证、银行卡、生物信息)、核心机密数据。不同等级执行不同防护策略,敏感数据最小化使用。
最小数据采集原则 只采集业务必需字段,禁止过度收集用户隐私;明确数据用途,不超范围使用。
合规对齐 提前对标等保 2.0、个人信息保护法、数据安全法,明确权限、留存期限、用户授权、脱敏要求,安全需求写入 PRD,不是后期补补丁。
威胁建模 做 STRIDE 威胁分析:欺骗、篡改、抵赖、信息泄露、拒绝服务、权限提升,识别接口、数据库、文件、第三方依赖的风险点。

二、架构设计阶段
1. 身份认证与访问权限
认证:禁止明文密码,使用 OAuth2.0/OIDC、JWT、Session,多因素 MFA;避免硬编码密钥。
授权:严格遵循最小权限原则,RBAC 基于角色访问控制,重要场景引入 ABAC 属性访问;权限粒度细化到接口、数据行级别,防止越权(水平越权、垂直越权)。
会话安全:会话超时、防会话劫持,Cookie 设置 HttpOnly、Secure、SameSite 属性。
2. 数据传输安全
全部接口强制 HTTPS/TLS1.2+,关闭老旧弱加密套件;内部服务之间也尽量加密,不裸跑 HTTP。
API 请求防篡改:签名校验、时间戳防重放攻击。
3. 数据存储安全
加密区分:加密存储 vs 脱敏
静态加密:数据库透明加密 TDE;敏感字段字段级加密(身份证、手机号),不要直接明文入库;密钥独立管理,禁止密钥写在代码 / 配置文件。
密码:绝对禁止明文存储,使用慢哈希算法 BCrypt、Argon2,禁止 MD5、SHA‑256 裸哈希。
数据脱敏
生产数据导出到测试 / 开发环境,必须脱敏:掩码、替换、扰动;开发环境严禁直接使用真实用户敏感数据。
数据库防护:禁止数据库公网暴露;开启审计日志;定期备份,备份文件同样加密。
4. 第三方依赖安全
选型评估第三方组件、SDK、外部接口的数据处理能力;明确第三方数据流转边界,防止数据泄露给合作方。
三、编码开发阶段
防止注入类漏洞
SQL 注入:一律使用预编译 ORM,禁止拼接 SQL 字符串;
XSS:输入校验、输出编码;
XML 注入、命令注入:禁止直接执行外部输入的命令。
输入输出校验 所有来自前端、API 的外部输入做校验,长度、格式、白名单校验,不信任客户端传来的任何数据。
敏感数据日志管控 日志严禁打印手机号、身份证、密码、token;日志同样做脱敏处理。
密钥与机密管理 密钥、数据库密码、token 不要硬编码到代码、配置文件、Git;使用密钥管理服务 KMS、配置中心。
依赖版本管理 定期扫描 pom/go.mod/package.json 依赖漏洞,修复高危 CVE,避免引入存在数据泄露风险的开源组件。
四、测试阶段
安全测试纳入测试流程
SAST 静态代码扫描:代码提交阶段扫描漏洞;
DAST 动态应用扫描:运行时扫描接口;
渗透测试:模拟黑客,重点测越权、数据泄露、接口越权拉取批量数据。
专项数据安全用例 测试场景:越权读取他人数据、敏感字段是否明文返回、导出接口是否可批量拉取全部数据、错误信息是否泄露数据库细节。
测试数据管控:测试环境禁止真实敏感数据。
五、部署上线阶段
环境隔离:开发、测试、预发、生产环境严格隔离;生产数据库不对开发人员开放。
配置加固:关闭不必要接口、端口;最小化容器账号权限,容器不要 root 运行。
密钥注入:通过环境变量、密钥服务注入机密,不打包进镜像。
安全基线:服务器、数据库、中间件加固,关闭弱密码。

六、运行运维阶段
审计日志 记录关键数据操作:查询、导出、修改、删除;日志不可篡改,留存合规要求时间;可以追溯 “谁、什么时间、访问了哪些数据”。
接口限流风控:防止爬虫、批量导出接口被拖库,对大批量数据查询做告警。
权限生命周期管理:员工离职及时回收账号权限;定期权限审计清理僵尸账号。
漏洞响应:定期漏洞扫描,漏洞及时修复;监控异常访问行为。
备份与灾难恢复:加密备份,定期演练恢复,防止勒索病毒造成数据丢失。
七、数据销毁与生命周期
设置数据过期策略,到期自动清理;
删除数据不能仅删除业务标记,存储层真正销毁;介质报废时安全擦除,防止数据恢复。
八、管理与人员保障(技术之外)
安全培训:开发、测试、运维了解数据安全风险,避免人为失误;
制度流程:数据导出审批流程,批量数据下载需要审批;
事件预案:制定数据泄露应急处置预案;
合规审计:定期开展数据安全自查。
常见踩坑总结
只加密传输,数据库明文存储敏感字段;
开发测试直接拷贝生产真实数据,造成泄露;
只做前端权限校验,后端接口没有校验,直接越权拿数据;
日志打印大量敏感信息;
密钥硬编码提交到 Git 仓库;
依赖库存在高危漏洞长期不升级。
本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。
原文链接
欢迎访问 小易撩挨踢