---
name: kd-flagship-security
description: 苍穹/旗舰版安全与异常规范。高危操作/异常处理/日志/输入校验。
alwaysApply: false
---

# 苍穹安全与异常规范

## 高危操作（开发前）
- 【强制】评估操作对业务流程/数据完整性/系统性能的影响，必要时填操作审核表
- 【强制】所有高危操作详细记录（操作时间/人员/对象/内容）
- 【强制】建立统一代码规范

## 高危操作（开发中）
- 【强制】操作前备份数据，操作后验证有效性
- 【强制】涉及增删改的高危操作用事务保证一致性，失败自动回滚
- 【强制】用户输入参数严格校验和过滤（防 SQL 注入、XSS）
- 【强制】加强团队沟通，异常情况及时反馈

## 高危操作（开发后）
- 【强制】涉及高危操作代码必须多人交叉审查（至少两轮）
- 【强制】设计全面测试用例覆盖正常/异常/边界情况
- 【强制】确保测试环境与生产环境一致性

## 异常处理
- 【推荐】统一使用 `KDException`，可自定义子异常
- 【推荐】处理掉异常（一般 UI 层），使用统一异常信息显示界面
- 【推荐】不允许直接隐藏异常，有特殊理由务必输出日志+注释
- 【推荐】将异常转换包装时，保留原始异常作为 cause 传入

## 日志
- 【强制】所有程序日志必须使用 `kd.bos.logging.Log` / `LogFactory`（或 `*Ext` 基类内置 `log`）
- 【强制】禁止 `org.slf4j.*`（含 `MDC`）、`LoggerFactory.getLogger`、`apache.commons.logging` 直接打业务日志
- 【强制】日志打印大列表对象或完整动态对象时评估后按需打印
- 【强制】禁止使用 json 序列化打印页面对象或数据对象（消耗 CPU）
- 【推荐】输出日志先判断当前日志级别是否开启（`logger.isDebugEnabled()`）
- 【推荐】日志输出有异常时带上异常对象
- 【推荐】正确设置日志级别：Debug / Info / Warn / Error
- 【推荐】谨慎记录日志，大量无效日志影响性能
- 【推荐】日志格式统一：方法全类名 + 调用参数，尽量不用中文

## 安全
- 【强制】第三方 API 接口调用必须设超时时间
- 【强制】业务代码禁止直接访问平台的元数据表 `t_meta_xx`

## 调度作业
- 【强制】涉及程序提示语时，需要在任务中手动设置调度任务的语种
- 【推荐】在调度任务中使用 `setRunByLang(Lang.get())` 设置运行语言

## 日志
- 实现：`kd.bos.logging.Log`
- Java 异常/日志语言写法：`skills/ok-cosmic/references/lang-java/exception-logging.md`
