关于 application-security
application-security 是面向应用开发与审查的安全技能,整理 OWASP 指引、安全默认做法、威胁建模和部署检查项,供团队落实开发安全要求。
主要功能
- 01OWASP Top 10 防护指引
- 02安全设计与实现原则
- 03部署前安全检查清单
- 04STRIDE 威胁建模
- 05风险等级与合规概览
适用场景
- 01检查应用中的常见漏洞
- 02为新功能规划安全控制
- 03部署前核对安全要求
- 04梳理威胁与信任边界
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill application-security安装后在 Claude Code 中输入/application-security确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/api-security.mdauth.mddata-protection.mdinput-validation.mdmonitoring-compliance.mdsecure-config.mdsupply-chain.mdthreat-modeling.md详细介绍
安全
安全是内建的,而非事后补上的。每项功能、端点和数据流都必须考虑安全影响。
OWASP Top 10(2025)
| # | 漏洞 | 防范措施 |
|---|---|---|
| 1 | 访问控制失效 | 在服务端验证权限,默认拒绝 |
| 2 | 安全配置错误 | 使用安全默认设置,移除未使用的功能 |
| 3 | 软件供应链故障 | SBOM、依赖扫描、签名构建 |
| 4 | 加密失效 | 使用 TLS,对密码进行哈希处理(argon2id),加密 PII |
| 5 | 注入 | 使用参数化查询,验证输入 |
| 6 | 设计不安全 | 威胁建模,制定安全要求 |
| 7 | 身份验证失效 | 使用强密码、MFA、安全的会话管理 |
| 8 | 软件或数据完整性失效 | 验证依赖项,为发布版本签名 |
| 9 | 日志记录和告警失效 | 记录安全事件,设置告警 |
| 10 | 异常情况处理不当 | 安全地失败,向客户端返回通用错误 |
安全原则
| 原则 | 规则 |
|---|---|
| 纵深防御 | 多层防护:防火墙、身份验证、授权、加密、审计 |
| 最小权限 | 仅授予所需的最低权限,不多不少 |
| 零信任 | 永不信任,始终验证。假设已遭入侵。 |
| 默认安全 | 开箱即用地启用 HTTPS、严格的密码策略和安全 Cookie |
| 安全地失败 | 出错时拒绝访问,不向用户透露内部详情 |
| 在服务端验证 | 客户端验证用于改善用户体验,服务端验证用于保障安全 |
部署前检查清单
| 范围 | 要求 |
|---|---|
| 密码 | 使用 argon2id(首选)或 bcrypt(12 轮以上)进行哈希处理 |
| 令牌 | 使用 EdDSA/ES256 签名的 JWT,访问令牌有效期 15min / 刷新令牌有效期 7d,使用 httpOnly Cookie |
| 会话 | 使用 HttpOnly、Secure、SameSite=Strict Cookie |
| 速率限制 | 身份验证端点:15min 内最多尝试 5 次 |
| 授权 | 所有路由都在服务端检查身份验证,默认拒绝 |
| 输入 | 使用架构(Zod)进行验证,使用参数化 SQL |
| 上传 | 将类型列入允许列表,限制文件大小 |
| 密钥 | 代码或 VCS 中不得包含密钥 |
| 标头 | CSP(带 nonce)、HSTS、Permissions-Policy、X-Content-Type-Options |
| CORS | 采用严格的配置 |
| 加密 | 静态和传输中的 PII 均须加密(AES-256 和 TLS 1.3) |
| 日志记录 | 对安全事件进行审计日志记录 |
| 依赖项 | 生成 SBOM,确保 npm audit 检查通过,并启用 Dependabot |
威胁建模(STRIDE)
| 威胁 | 类别 | 主要缓解措施 |
|---|---|---|
| 欺骗 | 身份验证 | MFA、强密码、有效期较短的 JWT |
| 篡改 | 完整性 | 输入验证、HTTPS/TLS、签名令牌 |
| 抵赖 | 可追责性 | 审计日志、数字签名 |
| 信息泄露 | 机密性 | 加密、最小权限、密钥管理 |
| 拒绝服务 | 可用性 | 速率限制、输入验证、CDN/DDoS 防护 |
| 权限提升 | 授权 | 对每个请求进行授权检查、ABAC、权限审计 |
风险等级
| 等级 | 操作 |
|---|---|
| 严重 | 需要立即采取措施 |
| 高 | 在发布前解决 |
| 中 | 在发布后解决 |
| 低 | 持续监控,可接受风险 |
合规概览
| 框架 | 范围 | 主要要求 |
|---|---|---|
| GDPR | 欧盟数据主体 | 同意、数据主体权利、违规通知(72h)、DPIA |
| HIPAA | 美国医疗保健数据 | PHI 加密、RBAC、审计日志、与服务提供商签订 BAA |
| SOC 2 | SaaS 客户数据 | 安全策略、MFA、加密、事件响应 |
| PCI-DSS | 信用卡数据 | 使用支付处理商(Stripe)、令牌化、网络分段 |
反模式
| 反模式 | 修正方法 |
|---|---|
| 事后才考虑安全 | 从设计阶段开始集成安全措施 |
| 客户端授权 | 始终在服务端验证权限 |
| 信任客户端数据(例如,从请求正文获取 userId) | 从经过身份验证的会话中获取用户 ID |
| 自行实现加密 | 使用经过验证的库(argon2、bcrypt、libsodium) |
| 合规 = 安全 | 合规只是最低要求;安全需要持续维护 |
| 返回冗长的错误响应 | 向客户端显示通用消息,在服务端记录详细信息 |
常见错误
| 错误 | 正确做法 |
|---|---|
| 仅在客户端执行授权检查 | 始终在服务端验证权限;客户端检查仅用于改善用户体验 |
| 信任请求正文中由用户提供的 ID(例如,userId) | 从经过身份验证的会话或令牌中获取用户身份 |
| 不使用经过验证的库,而是自行实现加密 | 所有加密操作均使用 argon2id、bcrypt 或 libsodium |
| 将合规认证视为等同于安全 | 合规是最低门槛;安全需要持续审查 |
| 向客户端返回包含堆栈跟踪的冗长错误消息 | 向客户端显示通用消息;仅在服务端记录详细信息 |
委派
- 扫描代码库,查找 OWASP Top 10 漏洞和不安全模式:使用
ExploreAgent 搜索 SQL 注入、XSS 和硬编码密钥 - 端到端实现身份验证、授权和安全标头:使用
TaskAgent 配置 JWT、RBAC、CSP、HSTS 和速率限制 - 为新功能设计威胁模型和安全架构:使用
PlanAgent 应用 STRIDE 方法并划分信任边界
对于数据库层安全(RLS 策略、Postgres/Supabase 加固、审计跟踪),请使用
database-security技能。对于 AI/LLM 安全(提示词注入防御、Agent 零信任、MCP 工具加固),请使用secure-ai技能。
参考资料
- 威胁建模 — STRIDE 方法、风险评估流程、信任边界
- 身份验证与授权 — JWT、基于会话的身份验证、OAuth、RBAC、ABAC、IDOR 防护
- API 安全 — OWASP API Security Top 10、对象级授权、速率限制、SSRF 防护、安全测试
- 输入验证 — SQL 注入、XSS、命令注入、路径遍历、Zod 验证、文件上传安全
- 数据保护 — 密码哈希(argon2id/bcrypt)、AES-256-GCM 加密、密钥管理
- 安全配置 — 安全标头、CORS、Express 加固、速率限制
- 供应链安全 — SBOM 生成、依赖项扫描、CI/CD 加固、制品签名
- 监控与合规 — 审计日志、错误处理、GDPR/HIPAA/SOC2/PCI-DSS、故障排查
评论
支持 Markdown