# 安全标准

[目的：定义安全态势，包含验证、授权、密钥和数据的模式]

## 理念
- 深度防御；最小权限；默认安全；失败关闭
- 在边界验证；根据上下文清理；永远不信任输入
- 分离认证（谁）和授权（什么）

## 输入和输出
- 在API边界和UI表单验证；强制执行类型和约束
- 根据目标清理/转义（HTML、SQL、shell、日志）
- 偏好允许列表而非阻止列表；早期拒绝，最少细节

## 认证和授权
- 认证: 验证身份；颁发短期令牌/会话
- 授权: 在操作前检查权限；默认拒绝
- 集中策略；避免在代码中重复检查

模式:
```typescript
if (!user.hasPermission('resource:action')) throw ForbiddenError();
```

## 密钥和配置
- 永远不提交密钥；存储在密钥管理器或环境中
- 定期轮换；审计访问；最小范围
- 在启动时验证必需的环境变量；缺失时快速失败

## 敏感数据
- 最小化收集；在日志中掩码/编辑；静态和传输中加密
- 按角色/需要知道限制访问；跟踪对敏感记录的访问

## 会话/令牌安全
- 尽可能使用httpOnly + secure cookie；到处使用TLS
- 短期过期；刷新时轮换；注销/泄露时撤销
- 将令牌绑定到受众/颁发者；包含最小声明

## 日志记录（安全感知）
- 记录认证尝试、权限拒绝和敏感操作
- 永远不记录密码、令牌、密钥、完整PII；避免完整主体
- 包含requestId和上下文以关联事件

## 标头和传输
- 强制TLS；HSTS
- 设置安全标头（CSP、X-Frame-Options、X-Content-Type-Options）
- 偏好现代加密；禁用弱协议/密码

## 漏洞态势
- 优先选用安全库；保持依赖项更新
- CI中的静态/动态扫描；跟踪并整改问题
- 向团队普及常见漏洞类型；将其编码为上述模式

---
_关注模式和原则。将具体配置链接到运维文档。_
