多语言安全规则(Language Security Rules)
来源: affaan-m/everything-claude-code 原始文件: rules/typescript/security.md + rules/python/security.md + rules/golang/security.md 类别: E-安全保障
一、TypeScript/JavaScript 安全
适用文件:
**/*.ts、**/*.tsx、**/*.js、**/*.jsx
密钥管理
// 错误:硬编码密钥
const apiKey = "sk-proj-xxxxx"
// 正确:使用环境变量
const apiKey = process.env.OPENAI_API_KEY
if (!apiKey) {
throw new Error('OPENAI_API_KEY not configured')
}
Agent 支持
- 使用 security-reviewer 技能进行全面安全审计
关键安全实践
| 实践 | 说明 |
|---|---|
| 环境变量 | 所有密钥通过 process.env 加载 |
| 输入验证 | 使用 Zod 等库进行 Schema 验证 |
| SQL 注入防护 | 使用参数化查询或 ORM |
| XSS 防护 | 使用 DOMPurify 清理用户 HTML |
| 依赖安全 | 运行 npm audit,提交锁文件 |
| 安全插件 | 使用 eslint-plugin-security |
二、Python 安全
适用文件:
**/*.py、**/*.pyi
密钥管理
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.environ["OPENAI_API_KEY"] # 缺失时抛出 KeyError
安全扫描
- 使用 bandit 进行静态安全分析:
bandit -r src/
关键安全实践
| 实践 | 说明 |
|---|---|
| 环境变量 | 使用 os.environ 或 python-dotenv 加载密钥 |
| 输入验证 | 使用 Pydantic 等库进行 Schema 验证 |
| SQL 注入防护 | 使用 ORM(如 Django ORM、SQLAlchemy),参数化原始 SQL |
| 静态分析 | 使用 bandit 扫描安全漏洞 |
| 依赖安全 | 使用 pip audit 或 safety check |
| Django 安全 | 参见 django-security 技能获取 Django 特定安全指南 |
三、Go 安全
适用文件:
**/*.go、**/go.mod、**/go.sum
密钥管理
apiKey := os.Getenv("OPENAI_API_KEY")
if apiKey == "" {
log.Fatal("OPENAI_API_KEY not configured")
}
安全扫描
- 使用 gosec 进行静态安全分析:
gosec ./...
Context 与超时
始终使用 context.Context 进行超时控制:
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
关键安全实践
| 实践 | 说明 |
|---|---|
| 环境变量 | 使用 os.Getenv 加载密钥,启动时验证 |
| 输入验证 | 使用 validator 库或自定义验证 |
| SQL 注入防护 | 使用参数化查询($1、$2),避免字符串拼接 |
| 静态分析 | 使用 gosec 扫描安全漏洞 |
| 超时控制 | 所有网络调用使用 context.Context |
| 依赖安全 | 使用 go list -m -json all + govulncheck |
| 错误处理 | 始终检查错误,不忽略返回值 |
四、通用安全准则(适用于所有语言)
以下安全检查在每次提交前必须完成:
- 无硬编码密钥(API 密钥、密码、令牌)
- 所有用户输入已验证
- SQL 注入防护(参数化查询)
- XSS 防护(HTML 已清理)
- CSRF 防护已启用
- 认证/授权已验证
- 所有端点已设置速率限制
- 错误消息不泄露敏感数据
密钥管理通用规则
- 绝不在源代码中硬编码密钥
- 始终使用环境变量或密钥管理器
- 在启动时验证必需的密钥是否存在
- 轮换任何可能已暴露的密钥
安全响应协议
发现安全问题时:
- 立即停止当前工作
- 使用 security-reviewer Agent
- 在继续之前修复严重(CRITICAL)问题
- 轮换任何暴露的密钥
- 审查整个代码库是否存在类似问题
各语言安全工具速查表
| 语言 | 静态分析工具 | 依赖安全工具 | 密钥管理方式 |
|---|---|---|---|
| TypeScript/JS | eslint-plugin-security |
npm audit |
process.env |
| Python | bandit |
pip audit / safety |
os.environ / dotenv |
| Go | gosec |
govulncheck |
os.Getenv |