易君召
发布于 2026-08-25 / 作者:易君召 / 3 阅读
0

软件开发过程中如何确保数据安全性

数据安全需要贯穿需求、设计、编码、测试、部署、运维、销毁完整软件生命周期,覆盖数据采集、传输、存储、使用、共享、销毁全链路,同时兼顾技术、流程、合规、人员管理。

一、需求与规划阶段:把安全前置(安全左移)

  1. 数据分级分类 对业务数据划分等级:公开数据、内部数据、敏感数据(手机号、身份证、银行卡、生物信息)、核心机密数据。不同等级执行不同防护策略,敏感数据最小化使用。

  2. 最小数据采集原则 只采集业务必需字段,禁止过度收集用户隐私;明确数据用途,不超范围使用。

  3. 合规对齐 提前对标等保 2.0、个人信息保护法、数据安全法,明确权限、留存期限、用户授权、脱敏要求,安全需求写入 PRD,不是后期补补丁。

  4. 威胁建模 做 STRIDE 威胁分析:欺骗、篡改、抵赖、信息泄露、拒绝服务、权限提升,识别接口、数据库、文件、第三方依赖的风险点。

二、架构设计阶段

1. 身份认证与访问权限

  • 认证:禁止明文密码,使用 OAuth2.0/OIDC、JWT、Session,多因素 MFA;避免硬编码密钥。

  • 授权:严格遵循最小权限原则,RBAC 基于角色访问控制,重要场景引入 ABAC 属性访问;权限粒度细化到接口、数据行级别,防止越权(水平越权、垂直越权)。

  • 会话安全:会话超时、防会话劫持,Cookie 设置 HttpOnly、Secure、SameSite 属性。

2. 数据传输安全

  • 全部接口强制 HTTPS/TLS1.2+,关闭老旧弱加密套件;内部服务之间也尽量加密,不裸跑 HTTP。

  • API 请求防篡改:签名校验、时间戳防重放攻击。

3. 数据存储安全

  1. 加密区分:加密存储 vs 脱敏

  • 静态加密:数据库透明加密 TDE;敏感字段字段级加密(身份证、手机号),不要直接明文入库;密钥独立管理,禁止密钥写在代码 / 配置文件。

  • 密码:绝对禁止明文存储,使用慢哈希算法 BCrypt、Argon2,禁止 MD5、SHA‑256 裸哈希。

  1. 数据脱敏

  • 生产数据导出到测试 / 开发环境,必须脱敏:掩码、替换、扰动;开发环境严禁直接使用真实用户敏感数据。

  1. 数据库防护:禁止数据库公网暴露;开启审计日志;定期备份,备份文件同样加密。

4. 第三方依赖安全

选型评估第三方组件、SDK、外部接口的数据处理能力;明确第三方数据流转边界,防止数据泄露给合作方。

三、编码开发阶段

  1. 防止注入类漏洞

  • SQL 注入:一律使用预编译 ORM,禁止拼接 SQL 字符串;

  • XSS:输入校验、输出编码;

  • XML 注入、命令注入:禁止直接执行外部输入的命令。

  1. 输入输出校验 所有来自前端、API 的外部输入做校验,长度、格式、白名单校验,不信任客户端传来的任何数据。

  2. 敏感数据日志管控 日志严禁打印手机号、身份证、密码、token;日志同样做脱敏处理。

  3. 密钥与机密管理 密钥、数据库密码、token 不要硬编码到代码、配置文件、Git;使用密钥管理服务 KMS、配置中心。

  4. 依赖版本管理 定期扫描 pom/go.mod/package.json 依赖漏洞,修复高危 CVE,避免引入存在数据泄露风险的开源组件。

四、测试阶段

  1. 安全测试纳入测试流程

  • SAST 静态代码扫描:代码提交阶段扫描漏洞;

  • DAST 动态应用扫描:运行时扫描接口;

  • 渗透测试:模拟黑客,重点测越权、数据泄露、接口越权拉取批量数据。

  1. 专项数据安全用例 测试场景:越权读取他人数据、敏感字段是否明文返回、导出接口是否可批量拉取全部数据、错误信息是否泄露数据库细节。

  2. 测试数据管控:测试环境禁止真实敏感数据。

五、部署上线阶段

  1. 环境隔离:开发、测试、预发、生产环境严格隔离;生产数据库不对开发人员开放。

  2. 配置加固:关闭不必要接口、端口;最小化容器账号权限,容器不要 root 运行。

  3. 密钥注入:通过环境变量、密钥服务注入机密,不打包进镜像。

  4. 安全基线:服务器、数据库、中间件加固,关闭弱密码。

六、运行运维阶段

  1. 审计日志 记录关键数据操作:查询、导出、修改、删除;日志不可篡改,留存合规要求时间;可以追溯 “谁、什么时间、访问了哪些数据”。

  2. 接口限流风控:防止爬虫、批量导出接口被拖库,对大批量数据查询做告警。

  3. 权限生命周期管理:员工离职及时回收账号权限;定期权限审计清理僵尸账号。

  4. 漏洞响应:定期漏洞扫描,漏洞及时修复;监控异常访问行为。

  5. 备份与灾难恢复:加密备份,定期演练恢复,防止勒索病毒造成数据丢失。

七、数据销毁与生命周期

  • 设置数据过期策略,到期自动清理;

  • 删除数据不能仅删除业务标记,存储层真正销毁;介质报废时安全擦除,防止数据恢复。

八、管理与人员保障(技术之外)

  1. 安全培训:开发、测试、运维了解数据安全风险,避免人为失误;

  2. 制度流程:数据导出审批流程,批量数据下载需要审批;

  3. 事件预案:制定数据泄露应急处置预案;

  4. 合规审计:定期开展数据安全自查。

常见踩坑总结

  1. 只加密传输,数据库明文存储敏感字段;

  2. 开发测试直接拷贝生产真实数据,造成泄露;

  3. 只做前端权限校验,后端接口没有校验,直接越权拿数据;

  4. 日志打印大量敏感信息;

  5. 密钥硬编码提交到 Git 仓库;

  6. 依赖库存在高危漏洞长期不升级。


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/software-development-data-security-assurance-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/