更新:2026-09-05 16:11

权限与安全规范

平台安全基线:鉴权、风控、SQL/输出安全、内容合规。

1. 鉴权体系

  • 登录态:接口入参 token;后端从 Redis userInfo{token}uid/group
  • 权限注解:@LoginRequired(purview),由 LoginAspect 统一校验,失败返回 code=0
  • 全局登录:isLogin=1 时把 -1 视同需登录。
  • 管理权限:group=administrator/editor 才能调 purview=1/2 接口。
Map map = redisHelp.getMapValue(this.dataprefix + "_" + "userInfo" + token, redisTemplate);
Integer uid = Integer.parseInt(map.get("uid").toString());
String group = map.get("group").toString();

2. 风控与反刷

  • IP 拦截:后台 banIP 命中即拒绝。
  • 域名/URL 授权ruleapiDBan + authorizeType(白/黑名单)。
  • 接口限频:Redis 键 _<模块>_<uid>_<id>,2 秒内重复请求拒绝(参考 SoftController.download)。
  • 全局防刷banRobots 开启后对写接口做频率累计,超限触发 silence 静默。
  • 合规提示:写接口必须考虑成功幂等(重复提交不产生副作用)。

3. 资产与支付安全

  • 金额一律 BigDecimal,禁止浮点。
  • 扣费/充值接口必须:服务端从数据库读价格(不接受客户端传价)、事务、幂等(先查后写)、流水留痕(paylog)。
  • 支付回调验签(支付宝/微信);Apple 收据校验走 verifyUrl。
  • 提现需管理审核链条。

4. XSS / SQL 注入 / 文件安全

  • 复杂参数接口使用 @XssCleanIgnore 前确认字段可信;默认 XSS 过滤由 mica-xss 处理(allow-tags 见 application.properties)。
  • MyBatis XML 用 ${prefix} 前缀外,字段一律 #{} 预编译。
  • 上传:限制后缀/大小(multipart 上限已配);APK 解析仅取元数据不执行文件。
  • 输出:展示用户内容前清洗(前端 replaceSpecialChar 亦做兜底)。

5. 内容合规(平台运营)

  • 评论/投稿/动态:默认审核流(status 字段),管理端审核→上线。
  • 违规处理:举报 → 管理端处理 → 封禁/删内容;封禁有到期时间(bantime)。
  • 用户注销:selfDelete 申请 → 管理端审核(selfDeleteOk)。

6. 敏感信息

  • 日志不打印 token/密码/支付密钥(editFile.setLog 只记录业务语义)。
  • 用户列表等接口对非管理员不下发邮箱/手机/资产(Controller 内 json.remove)。
  • application.properties 中密钥(数据库密码、邮箱密码、支付密钥)上线前更换并外置在 jar 旁(勿提交公库)。