安全性说明
一、如何防止普通用户删除数据
1. 用户权限控制
- 实施基于角色的访问控制(RBAC),区分管理员和普通用户
- 只有具有管理员角色的用户才能执行删除操作
- 在应用层检查用户权限,未授权用户无法看到删除按钮或访问删除接口
2. 数据库层面限制
- 为不同用户创建不同的数据库账户,分配最小权限
- 普通用户账户只授予SELECT权限,不授予DELETE权限
- 使用GRANT和REVOKE语句精确控制权限
3. 外键约束保护
- 设置外键约束为ON DELETE RESTRICT或ON DELETE NO ACTION
- 防止误删除被其他表引用的数据
- 确保数据完整性和一致性
4. 软删除机制
- 不直接物理删除数据,而是添加is_deleted标记字段
- 删除时更新标记,查询时过滤已删除数据
- 保留数据可追溯性,便于数据恢复
5. 操作审计日志
- 记录所有删除操作的日志,包括操作人、时间、内容
- 便于事后审计和问题追踪
- 对异常删除行为进行告警
二、如何限制用户只能查询数据
1. 数据库权限控制
- 创建只读用户角色:CREATE USER 'readonly'@'%' IDENTIFIED BY 'password';
- 仅授予SELECT权限:GRANT SELECT ON database.* TO 'readonly'@'%';
- 明确拒绝其他权限:不授予INSERT、UPDATE、DELETE权限
2. 视图隔离
- 为只读用户创建专用视图,只暴露必要字段
- 通过视图隐藏敏感字段(如密码、手机号等)
- 限制视图只能查询,不能修改基础表
3. 应用层控制
- 后端API接口进行权限校验,只读用户只能访问GET接口
- 前端界面根据用户角色动态显示功能按钮
- 使用中间件拦截未授权的写操作请求
4. SQL注入防护
- 使用参数化查询,避免直接拼接SQL语句
- 对用户输入进行严格的验证和过滤
- 使用ORM框架提供的安全查询方法