安全是后端系统的底线。攻击者只需要一次成功,而系统必须每次都防御成功。
1. 鉴权与认证
- 身份认证(Authentication) :验证用户是谁。常用方案:JWT、OAuth2、Session。
- 权限控制(Authorization) :验证用户能做什么。常见实现:RBAC(基于角色的访问控制)。
- 接口签名:为接口请求添加签名参数,防止参数篡改。
2. 防重放与防篡改
- 时间戳 + 随机数(nonce) :防止相同请求被多次重放。
- 签名机制:将请求体和密钥混合加密。
- HTTPS:基础加密通道,防止中间人攻击。
3. 数据输入安全
- SQL 注入防护:使用预编译语句(PreparedStatement)。
- XSS 防护:前端输出时转义 HTML。
- 文件上传安全:校验后缀与 MIME 类型,防止任意文件上传。
4. 敏感数据保护
- 加密存储:密码使用不可逆算法(BCrypt、Argon2)。
- 脱敏展示:手机号、身份证号仅显示部分。
- 传输加密:API 层强制 HTTPS,内部服务通信可用 mTLS。
5. 防爬与防暴力攻击
- 限制 IP 请求频率,触发验证码。
- 登录失败次数限制。
- User-Agent、Referer 校验防爬。
6. 审计与告警
- 所有关键操作写入审计日志。
- 异常登录、权限变更触发实时告警。
结论:安全不是功能,而是设计哲学。任何未被明确禁止的行为,最终都会被利用。后端开发应在系统初期就纳入安全模型。