尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ECC 规则体系下的 TypeScript/JavaScript 安全实践:密钥管理、Agent 审计与纵深防御指南

ECC 规则体系下的 TypeScript/JavaScript 安全实践:密钥管理、Agent 审计与纵深防御指南 ECC 规则体系下的 TypeScript/JavaScript 安全实践密钥管理、Agent 审计与纵深防御指南【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC导读本文围绕 ECCAgent Harness Performance Optimization System规则体系中的 TypeScript/JavaScript 专项安全规则展开系统讲解该规则如何与通用安全规则联动为 Claude Code、Codex 等 Agent 驱动的 TypeScript/JS 项目提供从「密钥管理」到「Agent 自动审计」的安全基线。读完本文你将掌握 ECC 分层规则的组织方式、TypeScript 项目中密钥管理的强制写法以及如何借助 security-reviewer Agent、security-scan 命令与 security-review 技能对代码进行 OWASP Top 10 维度的纵深审计。ECC 规则体系common 层与语言层的分层设计ECC 的安全规则不是孤立文件而是采用「通用层 语言层」的分层结构见 rules/README.md 中的目录组织说明rules/ ├── common/ # 语言无关的通用原则必须安装 │ └── security.md # 通用安全规则 └── typescript/ # TypeScript/JavaScript 语言专项规则 ├── security.md # TS/JS 安全规则扩展 common/security.md ├── coding-style.md ├── hooks.md ├── patterns.md └── testing.mdcommon 层rules/common/security.md定义适用于所有项目的通用原则不含具体语言的代码示例语言层如 rules/typescript/security.md以「扩展」方式补充语言特有的模式、工具与代码示例每个文件都会显式引用其 common 对应物。当语言层规则与 common 规则冲突时语言层规则优先specific overrides general这与 CSS 优先级或.gitignore的覆盖逻辑类似。文件头规则的作用域声明每个语言层规则文件顶部都带有 frontmatter声明该规则生效的路径范围paths: - **/*.ts - **/*.tsx - **/*.js - **/*.jsx这表示该规则对仓库内所有 TypeScript 与 JavaScript 源码文件含 JSX/TSX生效是 Agent 决定何时加载这条规则的关键元数据。核心主题一密钥管理Secret Management规则文件 给出的核心安全约束是严禁在源码中硬编码密钥一律使用环境变量并在启动时校验密钥存在性。错误示范硬编码密钥绝对禁止// 绝对不行: 硬编码的密钥 const apiKey sk-proj-xxxxx硬编码密钥会随代码进入版本库一旦仓库公开或泄露攻击者可直接利用该密钥访问对应服务造成真实资金或数据损失。正确做法环境变量 启动校验// 始终: 环境变量 const apiKey process.env.API_KEY if (!apiKey) { throw new Error(API_KEY not configured) }这里的两步写法值得在工程中强制推广从process.env读取密钥只存在于运行环境不进入源码与版本历史启动时 fail-fast 校验密钥缺失立即抛错而不是等到运行时调用第三方 API 时才暴露「未配置」问题避免线上故障排查成本。与 common 层密钥规则的呼应common/security.md 对密钥管理提出了更完整的通用要求两者共同构成完整基线NEVER 在源码中硬编码密钥ALWAYS 使用环境变量或密钥管理器secret manager在启动时校验必需密钥是否存在对任何可能已暴露的密钥立即轮换rotate。核心主题二Agent 支持——security-reviewer规则文件最后指明进行全面的安全审计时使用 security-reviewer 技能。这条指引背后是 ECC 中一组完整的 Agent 与技能配套Agent 定义agents/security-reviewer.md 定义了安全审查专家的角色使用 sonnet 模型配备 Read、Grep、Glob、Bash 工具用于检测密钥泄露、SSRF、注入、不安全加密及 OWASP Top 10 漏洞CLI 命令commands/security-scan.md 提供可执行的扫描入口深度技能skills/security-review/SKILL.md 提供完整的安全检查清单与代码模式。调用方式security-scan 命令可直接触发 AgentShield 扫描/security-scan [path] [--format text|json|markdown|html] [--min-severity low|medium|high|critical] [--fix]path可选默认当前项目可使用.claude/路径、仓库根或模板目录--formatjson用于 CImarkdown用于交接html用于独立审查报告--min-severity过滤低优先级发现--fix仅应用被明确标记为安全且可自动修复的修复项。也可在 CI如 GitHub Actions中将其作为强制门禁- uses: affaan-m/agentshieldv1 with: path: . min-severity: medium fail-on-findings: true纵深扩充Agent 视角的 OWASP Top 10 审查流程security-reviewer Agent 定义了标准审查工作流可按此流程对 TypeScript 项目进行系统化检查详见 agents/security-reviewer.md初始扫描运行npm audit、eslint-plugin-security搜索硬编码密钥重点审查认证、API 端点、数据库查询、文件上传、支付与 webhook 等高危区域OWASP Top 10 逐项核对注入、失效认证、敏感数据泄露、XXE、失效访问控制、安全配置错误、XSS、不安全反序列化、已知漏洞依赖、日志与监控不足代码模式审查按下表立即标记危险模式。高危模式速查表模式严重级别修复方式硬编码密钥CRITICAL使用process.env带用户输入的 Shell 命令CRITICAL使用安全 API 或execFile字符串拼接 SQLCRITICAL参数化查询innerHTML userInputHIGH使用textContent或 DOMPurifyfetch(userProvidedUrl)HIGH白名单允许域名明文密码比较CRITICAL使用bcrypt.compare()路由缺少认证检查CRITICAL添加认证中间件无锁余额检查CRITICAL事务中使用FOR UPDATE无速率限制HIGH添加express-rate-limit记录密码/密钥MEDIUM清理日志输出误报处理原则Agent 明确要求「先验证上下文再标记」常见的误报场景包括.env.example中的环境变量示例非真实密钥、测试文件中明确标注的测试凭证、本意即为公开的公共 API 密钥、以及用于校验和而非密码的 SHA256/MD5。深化实践security-review 技能的十类安全检查security-review/SKILL.md 提供了可落地的 TypeScript 安全编码模式与规则文件构成「规则告诉你做什么技能告诉你怎么做」的完整闭环这也是 rules/README.md 对 Rules 与 Skills 的定位区分。1. 输入校验Zod Schema使用 schema 校验而非黑名单过滤白名单原则优先import { z } from zod const CreateUserSchema z.object({ email: z.string().email(), name: z.string().min(1).max(100), age: z.number().int().min(0).max(150) }) export async function createUser(input: unknown) { try { const validated CreateUserSchema.parse(input) return await db.users.create(validated) } catch (error) { if (error instanceof z.ZodError) { return { success: false, errors: error.issues } } throw error } }注意这里对外部不可信输入使用unknown类型并通过zod收窄——这与 rules/typescript/coding-style.md 中「避免any、使用unknown安全收窄」的编码风格一脉相承。2. SQL 注入防护严禁字符串拼接 SQL一律使用参数化查询或查询构造器// 危险SQL 注入漏洞 const query SELECT * FROM users WHERE email ${userEmail} await db.query(query) // 安全参数化查询 await db.query( SELECT * FROM users WHERE email $1, [userEmail] )3. 认证与会话安全JWT 不应存于 localStorage易受 XSS 攻击应使用 httpOnly Cookieres.setHeader(Set-Cookie, token${token}; HttpOnly; Secure; SameSiteStrict; Max-Age3600)4. XSS 与 CSP用户提供的 HTML 必须经 DOMPurify 消毒CSP 需从严格策略起步避免默认使用unsafe-inline与unsafe-eval它们会抵消 CSP 的大部分保护应视为临时兼容债。5. CSRF、速率限制与敏感数据状态变更操作需 CSRF TokenCookie 统一SameSiteStrict所有 API 端点配置速率限制昂贵操作如搜索使用更激进限制日志与错误信息不得泄露密码、卡号、堆栈等敏感信息用户侧只返回通用错误提示。6. 依赖安全npm audit # 检查漏洞 npm audit fix # 修复可自动修复项 npm ci # 使用 lock 文件进行可复现构建应提交 lock 文件并在 CI 中使用npm ci替代npm install。7. 自动化安全测试技能中还给出了安全回归测试示例验证受保护接口返回 401、管理接口对普通用户返回 403、非法输入返回 400、超出速率限制时返回 429可将这些用例固化到测试套件中防止安全回归。应急响应协议发现安全问题时的处置顺序综合 common/security.md 与 agents/security-reviewer.md 的定义当发现安全问题时应按以下顺序处置立即停止当前工作调用security-reviewerAgent 进行专项审计先修复CRITICAL级别问题再继续轮换任何已暴露的密钥全量复查代码库中是否存在同类问题并输出详细报告、通知项目负责人、提供安全修复示例并验证修复有效。规则生效链路与配套工具从源码结构看这条安全规则的完整生效链路为rules/typescript/security.md语言层规则声明.ts/.tsx/.js/.jsx作用域→ 引用 rules/common/security.md通用基线规则指向 agents/security-reviewer.mdAgent 角色定义与 skills/security-review/SKILL.md深度技能配套 commands/security-scan.md 提供命令化扫描入口并可通过--min-severity与--fix参数接入 CI 门禁。配合 rules/typescript/hooks.md 中定义的 PostToolUse 钩子如对console.log的自动告警ECC 可以在 Agent 编写 TypeScript 代码的每个环节持续执行安全约束将「安全不是可选项」从口号落实为可强制、可验证的工程机制。【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表