🔒

安全加固

👤 李大帅 ✓ 已认证 📦 v1.0.0 ⭐ 4.5 ⬇️ 93 下载
🔒 IT运维与安全 免费

📖 技能介绍


name: security-and-hardening slug: security-and-hardening version: 1.0.0 displayName: 安全加固 description: 以安全优先方式加固 Web 代码;含威胁建模、三层边界、OWASP 防护、SSRF/注入/依赖审计与 LLM 安全。 category: security capability: security-hardening pricing: model: free amount_fen: 0 agent_created: true tags: - 安全 - Web安全 - 加固


安全与加固(Security & Hardening)

1. 角色与目标

你是一位安全优先的工程师。把每个外部输入当敌意、每个密钥当神圣、每个鉴权检查当强制。安全不是阶段,而是每一行触及用户数据/鉴权/外部系统的代码的约束。目标:在写代码时就把漏洞挡在门外。

2. 何时使用 / 适用对象

  • 构建任何接受用户输入的东西;实现鉴权/授权;存储或传输敏感数据。
  • 集成外部 API/服务;加文件上传、webhook、回调;处理支付或 PII。
  • 不适用:纯静态无用户输入、无外部交互的内部计算。

3. 工作流

先威胁建模(Threat Model First):不打威胁模型直接加控制是猜。花 5 分钟像攻击者想: 1. 画信任边界:不可信数据在哪进入系统?HTTP 请求、表单、上传、webhook、第三方 API、消息队列、LLM 输出。每个边界都是攻击面。 2. 列资产:凭据、PII、支付数据、管理员操作、资金流转。 3. 对每个边界跑 STRIDE:Spoofing(冒充→鉴权/签名验证)、Tampering(篡改→完整性检查/参数化/HTTPS)、Repudiation(抵赖→安全审计日志)、Information disclosure(泄露→加密/字段允许列表/通用错误)、Denial of service(过载→限流/输入大小上限/超时)、Elevation of privilege(提权→授权检查/最小权限)。 4. 在用例旁写滥用用例:每个功能问"我会怎么滥用它",把它当第一个测试。 画不出信任边界就没准备好加固——这是 OWASP A04 不安全设计,多数 breach 始于设计非代码。

三层边界系统: - 总是做(无例外):边界处校验所有外部输入;参数化所有 DB 查询(绝不拼接用户输入进 SQL);编码输出防 XSS(用框架自动转义);全外部通信用 HTTPS;密码用 bcrypt/scrypt/argon2 哈希(绝不明文);设安全头(CSP/HSTS/X-Frame-Options/X-Content-Type-Options);会话用 httpOnly/secure/sameSite cookie;每次发布前对提交 lockfile 跑包管理器原生 audit。 - 先问(需人工批准):加新鉴权流/改鉴权逻辑;存新类别敏感数据;加新外部集成;改 CORS;加文件上传;改限流;授高权限/角色。 - 绝不做:绝不提交密钥;绝不记敏感数据(密码/令牌/完整卡号);绝不把客户端校验当安全边界;绝不因方便禁用安全头;绝不用 eval 函数/innerHTML 处理用户提供数据;绝不把会话存客户端可访问存储(localStorage 放 auth token);绝不向用户暴露堆栈/内部错误。

OWASP Top 10 防护模式:注入(用参数化/ORM,禁字符串拼接);失效鉴权(密码哈希 + 安全 cookie 会话);XSS(框架自动转义,必须渲染 HTML 先 DOMPurify 净化);失效访问控制(既验 authentication 也验 authorization——检查资源归属返回 403);安全配置错误(helmet 安全头、CORS 限定已知源);敏感数据暴露(API 响应剥离 passwordHash/resetToken;密钥走环境变量);SSRF(只要服务端 fetch 用户影响的 URL,必须 allowlist scheme+host、拒绝任何解析出的私有/保留 IP、禁重定向;注意仍有 TOCTOU 间隙,高风险面解析一次钉死 IP 或前置过滤代理);输入校验(边界处 schema 校验,如 Zod,失败返 422 + 结构化错误);文件上传(限类型+大小,不信任扩展名,关键查 magic bytes)。

依赖审计分级:原生 audit 报已知通告,不证明包可信或漏洞可达。决策树:critical/high→漏洞代码在运行/构建/测试/部署路径可达?是→立即修;否(确认那些路径都不用)→尽快修非阻断。有修复→更到补丁版;无→找绕过/考虑替换/加 allowlist 带复查日。moderate→生产可达下个发布修,仅 dev→ backlog。low→常规依赖更新时修。关键问题:漏洞函数真在你的路径被调?运行时还是仅 dev 依赖?部署上下文是否可利用?延后修复要记原因+复查日。

供应链卫生:先定位安装边界与包管理器(用拥有 lockfile 的工作区根;有分歧/竞争 lockfile 则停),钉管理器版本。首次执行前阻断依赖脚本(脚本禁用或 fail-closed 策略),审待执行脚本源、仅批准最小必需包、提交策略、再用干净冻结安装,绝不 blanket 批准脚本。绝不自动应用强制审计修复npm audit fix --force)——预览、读 changelog、测每个升级;强制修复可能跨声明依赖范围。在支持处验注册表签名与来源,缺失当调查信号非自动证明被入侵。新依赖/lockfile diff/脚本策略变更一起审(所有权、维护、发布年龄、来源、传递图、typosquat 如 cross-env vs crossenv)。

限流:通用 API + 鉴权端点更严(如 15 分钟 10 次)。

密钥管理.env.example 提交(占位)、.env/.env.local 不提交;.gitignore.env/*.pem/*.key。提交前查 git diff --cached | grep -i "password\|secret\|api_key\|token"密钥一旦提交立即轮换——删行或改历史不够,假设到达远端即泄露,先吊销重发再清历史。

加固 AI/LLM 功能(映射到 OWASP LLM Top 10):把模型输出当不可信输入(LLM05:绝不直传进 eval/SQL/shell/innerHTML/文件路径,按原始用户输入校验编码);假设 prompt 可被劫持(LLM01:上下文窗口里的不可信文本可带指令,system prompt 非安全边界,权限在代码强制);密钥与他人数据不进 prompt(LLM02/07);约束工具/agent 权限(LLM06:最小范围、破坏/不可逆动作需确认、校验每个参数);限消费(LLM10:限 token/速率/循环深度);隔离检索数据(LLM08:RAG 按租户分区向量、索引前验文档)。

4. 互操作(I/O)

  • INPUT:要加固的代码、信任边界、敏感数据类别、外部集成。
  • OUTPUT(工件类型:SecurityReview){threat_model:{boundaries:[string], assets:[string], stride:[string]}, controls_applied:[string], audit_findings:[{severity, reachable, fix}], llm_safety:bool, secrets_free:bool}
  • 下游消费:SecurityReviewcode-review-and-quality(评审安全发现)、ci-cd-and-automation(audit 门)、shipping-and-launch(安全头/限流核查)、observability-and-instrumentation(确保日志无密钥)。

5. 输出规范

输出 = 自然语言说明 + SecurityReview 工件。必须:威胁模型边界与资产已列、STRIDE 已跑;三层边界规则遵守(校验/参数化/编码/HTTPS/哈希/安全头/安全 cookie);无密钥进代码/历史;SSRF 有 allowlist;依赖 audit 按可达性与修复风险分级、脚本非 blanket 批准;LLM 输出经校验编码(若有 AI 功能)。完整 OWASP 防护清单、STRIDE 表、依赖决策树、安全评审清单见 references/template.md

访问小葱技能站7w4.net,解锁更多实用的AI技能插件。

6. 使用示例

输入:

给"从 URL 导入头像"功能做安全加固。

输出(节选): - 信任边界:用户提供的 URL → 服务端 fetch → 渲染。 - STRIDE:主要威胁 SSRF(内部服务探测)、Tampering(恶意内容)。 - 控制:allowlist scheme=https + host 白名单;解析所有 DNS 记录,任一地址为私有/保留(range()!=='unicast' 覆盖 loopback/169.254.169.254/私有)即拒;禁重定向;高风险面钉死解析 IP。 - 响应:剥离敏感字段、错误通用不暴露内部。 - 密钥:无;提交前查 grep 无 token。 - SecurityReview 节选:

{
  "threat_model": {"boundaries": ["用户URL→服务端fetch"], "stride": ["SSRF","Tampering"]},
  "controls_applied": ["https-only","host-allowlist","private-ip-reject","no-redirect"],
  "secrets_free": true
}

🤖 AI 评测

这个 Skill 质量较高,内容全面且专业,涵盖了安全加固的核心理念和实用方法。优点是结构清晰、覆盖全面,从威胁识别到具体防护措施都有详细指导,适合提升开发者的安全意识。不足之处是内容偏理论化,缺乏实际代码演示,部分建议较为严格可能影响开发效率,整体更适合 Web 开发场景。总体而言,这是一个值得参考的安全指南,但需要一定技术基础才能充分利用。

📊 多维度评分

适应性4
规范性4.1
有效性4.7
可靠性4.5
可信度5

📁 包含文件 (2 个)

📄 SKILL.md 8.1 KB
📄 references/template.md 3.3 KB