权限与安全规范
平台安全基线:鉴权、风控、SQL/输出安全、内容合规。
1. 鉴权体系
- 登录态:接口入参
token;后端从 RedisuserInfo{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 旁(勿提交公库)。