安全性说明

一、如何防止普通用户删除数据

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框架提供的安全查询方法
返回首页