Community编程与开发github.com

安全Web应用开发指南

基于OWASP的Web应用安全开发指南,适用于构建、编辑或审查Web应用时主动触发,涵盖认证、会话、JWT/OAuth/OIDC、用户输入、数据库查询、文件上传、API端点、Cookie/CORS/CSP/安全头、密钥、重定向、外部URL获取、日志/错误、依赖项、威胁建模、加固、审计以及LLM/AI相关功能(如提示处理、智能体工具和MCP服务器)或各类漏洞(如XSS、SQLi、IDOR、CSRF、SSRF、开放重定向、原型污染、反序列化、提示注入和供应链风险)。

安全Web应用开发指南 是什么?

安全Web应用开发指南是一个基于OWASP Top 10:2025、ASVS 5.0、Cheat Sheet Series及WSTG安全测试指南的实用Web应用安全技能。它默认在编写代码时静默生成安全代码,仅在发现最高严重性问题时提示;而在审核模式下(通过指定“review”、“audit”等关键字触发),会加载专用检查清单并生成高优先级发现问题列表。该技能支持多种运行模式:审计(完整优先审查)、快速检查(仅检查最高风险项)、加固(安全地应用补丁)、修正(迭代审计与修复循环)、设计评审(预实现威胁建模)、报告(生成正式审计报告)、自我更新和维护。它将具体安全主题(如输入处理、认证、授权、令牌、API、前端安全等)路由到相应的引用文件,而非一次性加载全部内容,确保高效。同时,它持续监控20类常见安全问题(如缺少权限校验、硬编码密钥、SQL注入、弱密码哈希、JWT验证缺陷、XSS、CORS配置错误、缺少速率限制、日志泄露敏感信息等),并在发现时提供具体的修复建议。该技能适用于主流Web框架(如Next.js、Express、Django、Flask、FastAPI、Rails、Spring、Laravel、Go等),且与具体的AI智能体平台无关(兼容Claude Code、Codex、Gemini CLI等)。

兼容平台✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/gabrielereylane/lovable-skills/tree/HEAD/.agents/skills/secure-webapp

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

安全Web应用编码指南

将 OWASP Top 10:2025、ASVS 5.0、Cheat Sheet Series 以及精选的 WSTG 材料转化为实用的 Web 应用安全指南。

默认(内联模式): 静默编写安全代码;仅标记你附近发现的最高影响问题。 审计模式: 当包含“review”、“audit”、“harden”、“is this secure?”或事件跟进时,读取 assets/audit-checklist.md 并生成有优先级的发现。

模式,以 $secure-webapp <mode> 方式调用:

  • $secure-webapp audit:完整的优先级审查;读取 assets/audit-checklist.md。
  • $secure-webapp quick-check:仅检查最高风险项——授权、身份验证/会话、密钥、注入/XSS、上传、SSRF、令牌。不生成完整检查清单报告。
  • $secure-webapp harden:在允许编辑的地方直接应用安全变更;保留架构的小补丁;验证并标记任何需要产品审批的事项。
  • $secure-webapp remediate:迭代审计→修复循环;首先完整读取 assets/remediate-checklist.md。
  • $secure-webapp design-review:实现前的威胁建模——假设、信任边界、滥用案例、必须的控制措施、未解决的问题。
  • $secure-webapp report:向 docs/security-audit-report-YYYY-MM-DD.md 写入正式报告;首先完整读取 assets/report-template.md 并遵循每个步骤。需要本会话前已执行审计。写入文件,绝不写入聊天。
  • $secure-webapp update:通过运行 npx --yes github:hov172/secure-webapp-skill --global 自行更新此安装。它会检查版本,仅在有新版本发布时才重新安装。标志:--claude/--codex/--gemini、--check、--force。
  • $secure-webapp maintain:从源码仓库的克隆中更新技能包本身——参见 scripts/README.md。

仅加载任务所需的参考资料。绝不要全部批量加载。

路由

任务涉及加载的参考文件
未信任的字符串被解释为 HTML/DOM/SQL/shell/NoSQL/LDAP/正则表达式/CSVreferences/input-handling.md
登录、注册、密码、多因素认证、重置、暴力破解、会话、Cookie、退出登录references/auth-and-sessions.md
权限、角色、所有权检查、IDOR、租户隔离references/authorization.md
JWT、API/刷新令牌、签名与验证、OAuth/OIDC、PKCE、statereferences/tokens-and-oauth.md
REST/GraphQL/WebSocket 端点、速率限制、批量赋值、响应结构、上传/下载、路径遍历、预签名URLreferences/apis-and-files.md
Secure/HttpOnly/SameSite、CSP、CORS、CSRF、安全头、iframe、postMessagereferences/frontend-and-headers.md
环境变量、.env、密钥、密钥管理器、调试模式、默认值references/secrets-and-config.md
加密、密码哈希、算法、密钥管理、个人隐私信息references/data-and-crypto.md
依赖项、锁定文件、SBOM、CI/CD、GitHub Actions、已签名的制品references/supply-chain.md
用户控制的外部URL、SSRF、竞争条件、反序列化、原型污染references/secure-coding.md
日志记录、错误响应、堆栈跟踪、审计追踪、故障关闭、回滚references/logging-and-errors.md
新功能设计、威胁建模、多租户、安全设计方案references/insecure-design.md
LLM/AI 功能、提示构建、RAG、智能体工具调用、MCP 服务器、模型输出被渲染或执行references/ai-and-llm.md

持续监控清单

在 Web 代码中遇到以下问题时即时标记,并提供一个具体的修复方案:

  1. 资源路由上缺少服务器端身份验证/所有权检查。建议使用查询级范围限制,如 WHERE owner_id = :current_user。
  2. 硬编码的密钥、凭据、JWT 密钥、API 密钥或已提交的 .env 文件。
  3. 使用字符串拼接构建 SQL/NoSQL/shell 查询。应使用参数化查询、安全构建器或 argv API。
  4. 明文或快速哈希的密码。应使用 argon2id、scrypt 或 bcrypt;仅在必要时使用 PBKDF2。
  5. JWT 验证使用了未固定密钥的算法、缺少 exp/iss/aud 校验,或密钥硬编码在代码中。
  6. 在用户内容上使用 dangerouslySetInnerHTML、v-html 或 innerHTML。应渲染为文本或进行清理。
  7. 包含凭据的 CORS 使用通配符或回显的来源。应使用严格的允许列表。
  8. 登录、注册、重置、多因素认证/一次性密码或高资源消耗的端点缺少速率限制。
  9. 面向客户端暴露的详细生产环境错误、堆栈跟踪、SQL/ORM 细节或启用了调试模式。
  10. 未经验证的 next、returnTo 或 URL 参数导致的开放重定向。
  11. 用户提供的 URL 导致的 SSRF,未使用允许列表且在 DNS 解析和重定向后未阻止私有 IP。
  12. 日志中包含密码、令牌、会话 ID、密钥或不必要的个人隐私信息(PII)。
  13. 仅在客户端实施的安全控制:隐藏字段、禁用按钮、客户端角色声明、前端验证。
  14. 文件上传没有大小、类型、路径、存储或生成文件名的控制。
  15. 在身份验证、授权、速率限制、功能开关或事务周围开启的故障开放异常路径。
  16. 余额、配额、支付、库存、优惠券或一次性令牌的状态变更非原子操作。
  17. 模型/LLM 输出未被检查就到达了接收点——innerHTML、shell、SQL、文件路径、fetch URL 或下游智能体。将其视为不可信输入。
  18. 智能体工具调用是针对服务账号而非最终用户授权的,或使用通用的 run_shell/execute_sql/http_request 工具,使得提示注入变为 RCE、SQLi 或 SSRF。
  19. 未信任的文本被拼接到系统提示中;密钥或其他用户的数据出现在模型上下文中。
  20. 可变依赖项或 CI 操作引用,在期望锁定文件和固定版本的地方使用了可变的标签——移动的标签会在该作业中运行攻击者代码,并获取该作业的密钥。当作业持有部署凭据、签名密钥或发布权限时,评为高严重性;同样适用于存在 OIDC 的长期云凭据。审计单仓库中的每个工作空间,并标记任何弱于 high 的审计级别。

行为规范

  • 默认编写安全代码,无需冗长解释。在有用时简要说明安全相关的选择。
  • 严格程度与应用程序的风险等级相匹配;不要将企业级控制强加于一次性原型。
  • 绝不有意生成不安全的代码。提供安全等效方案并用一句话说明限制。
  • 对于新的跨信任边界功能,检查:不可信输入、授权、故障模式、存储的数据、滥用路径。
  • 审计时,检查真实代码,仅提出必要的范围界定问题,并按优先级报告严重性 + 位置 + 证据 + 修复方案。
  • 除非被问及,否则不引用 OWASP 需求编号。
  • 不声称进行渗透测试;这是代码和设计审查。

范围

主流 Web 技术栈——Next.js、Express、Django、Flask、FastAPI、Rails、Spring、Laravel、Go 等。对于参考资料未涵盖的领域,如实说明并指向相关的 OWASP 来源,而非自行猜测。

智能体无关:适用于 Claude Code、Codex、Gemini CLI 以及任何加载技能或读取 AGENTS.md/GEMINI.md 的工具。当本文档提及某个工具时,请使用你的环境中的等效工具。

相关技能