Skip to content
Back to skills

Security Hardening Zh

ASecurity

安全加固、威胁建模、OWASP Top 10 防护、输入校验、SSRF、依赖审计分诊、供应链卫生、限流、密钥管理、隐私合规、LLM 应用安全。当用户说「这个登录流程安全吗」「审一下输入处理有没有漏洞」「文件上传怎么做安全」「npm audit 报了一堆怎么办」「要接 LLM,安全上注意什么」「用户数据怎么合规存」「密钥泄露了怎么办」时使用。流程:先五分钟威胁建模(信任边界、资产、STRIDE、滥用用例)→ 三层边界(总是做/先问/绝不)→ OWASP 防护模式(注入、鉴权、XSS、越权、配置、数据暴露、SSRF)→ 边界处 schema 校验、上传限制、派生路径上的破坏性操作三重检查 → 依赖审计按可达性分诊与供应链规则 → 限流要用共享存储 → 密钥泄露立刻轮换 → 数据最小化与保留期 → LLM 输出视为不可信输入。也覆盖「注册登录流程」「哪些必须现在修」「接大模型做客服」这类说法。改编自 addyosmani/agent-skills 的 security-and-hardening(MIT)。

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 13, 2026
ai-agentsrustgoshellsqlgitapisecurity

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 13, 2026

npx -y skills add po-et/workbuddy-skills --skill security-hardening-zh --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Security Hardening Zh?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Security Hardening Zh
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/po-et-security-hardening-zh/badge)](https://www.skillsdirectory.com/skills/po-et-security-hardening-zh)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: security-hardening-zh
description: 安全加固、威胁建模、OWASP Top 10 防护、输入校验、SSRF、依赖审计分诊、供应链卫生、限流、密钥管理、隐私合规、LLM 应用安全。当用户说「这个登录流程安全吗」「审一下输入处理有没有漏洞」「文件上传怎么做安全」「npm audit 报了一堆怎么办」「要接 LLM,安全上注意什么」「用户数据怎么合规存」「密钥泄露了怎么办」时使用。流程:先五分钟威胁建模(信任边界、资产、STRIDE、滥用用例)→ 三层边界(总是做/先问/绝不)→ OWASP 防护模式(注入、鉴权、XSS、越权、配置、数据暴露、SSRF)→ 边界处 schema 校验、上传限制、派生路径上的破坏性操作三重检查 → 依赖审计按可达性分诊与供应链规则 → 限流要用共享存储 → 密钥泄露立刻轮换 → 数据最小化与保留期 → LLM 输出视为不可信输入。也覆盖「注册登录流程」「哪些必须现在修」「接大模型做客服」这类说法。改编自 addyosmani/agent-skills 的 security-and-hardening(MIT)。
author: Captain
version: 0.1.1
display_name: "安全加固(威胁建模到 LLM 安全)"
display_name_en: "Security & Hardening (zh)"
description_zh: "先威胁建模再加固:三层边界、OWASP 防护模式、边界校验与 SSRF、派生路径破坏性操作三重检查、依赖审计分诊与供应链卫生、共享存储限流、密钥轮换、隐私最小化、LLM 输出当不可信输入。"
description_en: "Threat-model first, then harden: three-tier boundaries, OWASP prevention patterns, boundary validation and SSRF, triple checks for destructive ops on derived paths, dependency audit triage and supply-chain hygiene, shared-store rate limiting, secret rotation, data minimization, LLM output as untrusted input."
tags:
  - "安全加固"
  - "security"
  - "OWASP"
  - "威胁建模"
  - "SSRF"
  - "依赖审计"
  - "LLM 安全"
  - "密钥管理"
examples_zh:
  - "审一下这个注册登录流程的安全问题"
  - "npm audit 报了 40 个漏洞,哪些必须现在修"
  - "我们要接大模型做客服,安全上要做什么"
examples_en:
  - "Audit this signup/login flow for security issues"
  - "npm audit reports 40 findings, which must be fixed now"
  - "We're adding an LLM chatbot, what security work is needed"
metadata:
  { "openclaw": { "requires": { "bins": [] }, "os": ["darwin", "linux", "windows"], "emoji": "🛡️" } }
---

# 安全加固

把每个外部输入当敌意的、每个密钥当神圣的、每个授权检查当必需的。安全不是一个阶段,是对每一行碰用户数据、鉴权、外部系统的代码的约束。
用于:接受用户输入、鉴权授权、存传敏感数据、集成外部 API、上传/webhook/回调、支付或个人信息。

## 先威胁建模(五分钟)
1. **画信任边界**:不可信数据从哪进入——HTTP 请求、表单、上传、webhook、第三方 API、消息队列、**LLM 输出**,以及看起来"内部"的本地值:别的进程的命令行或环境、共享卷上的文件名、任务载荷里的路径。**信任看谁写的值,不看哪条通道送来的。**
2. **点名资产**:凭证、PII、支付数据、管理员操作、资金流动。
3. **对每条边界过一遍 STRIDE**:冒充(认证、签名)/ 篡改(完整性校验、参数化查询、HTTPS)/ 抵赖(安全事件审计日志)/ 信息泄露(加密、字段白名单、通用错误)/ 拒绝服务(限流、输入大小上限、超时)/ 提权(授权检查、最小权限)。
4. **在用例旁写滥用用例**:每个功能问"我会怎么滥用它",把它变成第一个测试。
说不出信任边界就还没准备好加固——多数事故始于设计(OWASP A04)。

## 三层边界
**总是做**:边界校验所有外部输入;数据库查询全部参数化;输出编码防 XSS(用框架自动转义,别绕开);全部 HTTPS;密码用 bcrypt/scrypt/argon2;安全头(CSP、HSTS、X-Frame-Options、X-Content-Type-Options);会话 cookie httpOnly + secure + sameSite;每次发布前对锁文件跑包管理器原生审计。
**先问人**:新增或改动鉴权流程;存新类别的敏感数据;新增外部集成;改 CORS;加文件上传;改限流;授予更高权限或角色。
**绝不**:提交密钥;记录敏感数据;把客户端校验当安全边界;为方便关安全头;对用户数据用 `eval()`/`innerHTML`;把会话放客户端可读存储(localStorage 存 token);向用户暴露堆栈或内部错误。

## OWASP 防护模式
注入:参数化/ORM,绝不拼接。认证:强哈希、会话配置(httpOnly/secure/sameSite/有效期)、密钥来自环境。XSS:框架自动转义;必须渲染 HTML 时先 DOMPurify。越权:每个端点既认证又**授权**——检查当前用户拥有该资源。配置:helmet 类安全头、CSP、CORS 限定已知来源。数据暴露:响应剔除 passwordHash/resetToken 等字段;密钥走环境变量并在缺失时启动失败。
**SSRF**:服务端抓取用户可影响的 URL(webhook、从 URL 导入、图片代理、链接预览)会被瞄准内网(云元数据、localhost、私网)。做法:只允许 https、主机白名单、解析**全部** DNS 记录并拒绝任何私有/保留地址、禁止重定向。仍有 TOCTOU 缝隙(fetch 会再解析一次 DNS,短 TTL 可重绑定):高风险面要解析一次后连固定 IP,或前置过滤代理。

## 输入校验
在边界用 schema 校验(zod 类),422 返回结构化错误,之后内部代码信任类型。上传限制类型与大小,关键场景查魔数不信扩展名。
**派生路径上的破坏性操作**:删除/移动/覆盖只和命名目标的值一样安全;从内核、任务载荷、兄弟服务读到的值只证明它从哪来,不证明谁写的;"绝对路径、至少一层深"这种形状检查会被误当授权,这就是清理例程删掉根目录的方式。破坏性调用前三条都要:解析符号链接后目标在**白名单根**之下;至少在根**之下一层**(根永远不是目标);带有**它是你的证据**且在操作前、在任何会删掉该证据的清理前读取。拒绝时记录并停止——退回更宽的默认路径正是要防的失败。限制:树内的标记是自证,写得进去的都能写标记,所以预期所有者要来自认证状态且标记要有完整性保护;解析路径再对名字操作在共享卷上是 check/use 竞争,要按描述符持有目标、no-follow、根下操作。

## 依赖审计分诊
审计只报已知公告,不证明包可信或漏洞代码可达。严重/高危 → 运行/构建/测试/部署路径可达则立即修(升级、补丁、替换),确认不可达则尽快修但不阻塞;有修复用修复版,没有则找变通、考虑替换、或加白名单并设复审日期;中危 → 生产可达下个周期修,仅开发依赖进待办;低危 → 常规更新时修。延后必须写原因和复审日期。
**供应链卫生**:先找安装边界与包管理器(拥有锁文件的工作区根;`packageManager`、锁文件、CI 三者一致,不一致或有竞争锁文件就停);首次执行前**禁用依赖安装脚本**,检查待执行脚本源码只批准最少的包,提交策略后用 frozen/immutable 安装验证;**绝不自动执行强制审计修复**(`npm audit fix --force`),预览、读变更日志、逐个测试;支持处验证签名与来源(`npm audit signatures`),缺失是调查信号;新依赖、锁文件 diff、脚本策略变更一起评审——所有权、维护、发布时长、来源、传递图、拼写仿冒(`cross-env` vs `crossenv`)。

## 限流
API 通用限制 + 鉴权端点更严格。**多于一个进程就要用共享存储计数**:进程内计数器在负载均衡后有效上限变成 `max × 实例数`,无服务器/边缘运行时每次调用从零开始,鉴权限制可能永远不触发;用 Redis 类共享 store 或 HTTP 型限流器。

## 密钥管理
`.env.example` 提交、`.env`/`.env.local` 不提交;`.gitignore` 含 `.env .env.local .env.*.local *.pem *.key`;提交前 grep 暂存区。**密钥一旦进过提交就轮换**:删行或改写历史不够,到达远端那一刻就当已泄露——先吊销重发,再清历史。

## 数据隐私与合规
安全问"攻击者能读吗",隐私问"我们该不该持有、持有多久"。最便宜的是从未收集的数据;个人数据是要最小化的负债。分类:非个人(聚合、匿名计数)/ 个人 PII(姓名、邮箱、IP、设备或用户 ID:最小化、访问控制、纳入导出/删除)/ 敏感(健康、金融、位置、生物特征、证件、未成年人:更强依据、更严访问、通常加密 + 审计)。规则:**有目的才收集**("以后可能有用"不是目的,是潜在泄露范围;PII 不进遥测);**先定保留期然后真的删**(含备份、缓存、搜索索引、分析副本;无过期的数据是排期的泄露);支持所在辖区要求的数据主体权利(导出、更正、删除)——这是工程功能,schema 要让用户数据可找可删;收集或向第三方(分析/广告/LLM 供应商)共享前取得可审计的同意,并签数据处理协议;地域规则可配置,不写死一地法律。

## LLM 应用安全(OWASP LLM Top 10)
**模型输出当不可信输入**(LLM05):绝不直接进 eval、SQL、shell、innerHTML、文件路径,像原始用户输入一样校验和编码——先解析、再 schema 校验、再只执行白名单动作。**假设提示词会被劫持**(LLM01):上下文里的任何不可信文本(用户消息、抓的网页、PDF)都可能带指令;系统提示不是安全边界,权限在代码里执行。**密钥与他人数据不进提示词**(LLM02/07):上下文里的都可能被复述。**约束工具与代理权限**(LLM06):最小工具集、破坏性操作要确认、校验每个工具参数。**限制消耗**(LLM10):token、速率、循环/递归深度封顶。**隔离检索数据**(LLM08):向量库是信任边界,按租户分区、索引前校验文档。

## 安全评审清单(摘要)
认证:强哈希、httpOnly/secure/sameSite、登录限流、重置令牌过期。授权:每个端点查权限、只能访问自己的资源、管理操作验角色。输入:边界校验、参数化、输出编码、服务端抓取白名单、派生路径破坏性操作三重检查。数据:无密钥入库、敏感字段不出响应、PII 静态加密、分类/目的/最小化、保留期与删除路径、导出/删除请求与第三方共享同意。基础设施:安全头、CORS 限定、依赖审计、错误不暴露内部。供应链:单一锁文件、frozen 安装、审计按可达性分诊、安装脚本默认阻断、新依赖评审。AI:模型输出不可信、密钥与他人数据不进提示、工具权限受限。

## 合理化借口对照

| 借口 | 现实 |
|---|---|
| "内部工具不用管安全" | 内部工具也会被攻破;攻击者找最弱一环 |
| "安全以后再加" | 事后补比一开始做难 10 倍 |
| "没人会来攻击这个" | 自动扫描器会找到;靠隐蔽不是安全 |
| "框架处理了安全" | 框架给工具不给保证,仍要用对 |
| "只是原型" | 原型会变生产 |
| "威胁建模小题大做" | 五分钟的"我会怎么攻它"避免事后打不了补丁的设计缺陷 |
| "LLM 输出只是文本" | 那段文本可以是 SQL、script 标签、shell 命令 |
| "审计过了依赖就安全" | 审计匹配已知公告,抓不到新恶意包,也不让未评审的安装脚本变安全 |
| "先收着以后可能用" | 不持有的数据不会被泄露、传票、误删 |
| "删除请求手工处理" | 手工漏掉备份、缓存、分析副本;schema 找不到用户数据就无法履行 |
| "合规是法务的事" | 导出、删除、保留、同意是 schema 和代码,PII 散到十个系统后法务补不了 |

## 红灯
用户输入直接进查询/命令/HTML;删除/移动/覆盖的目标来自载荷、配置或别的进程的命令行却只做了形状检查;源码或历史里有密钥;端点没有认证或授权;CORS 通配;鉴权端点没限流或多实例前用内存限流器;向用户暴露堆栈;已知严重漏洞的依赖、竞争锁文件、不可复现安装、一揽子批准的脚本;服务端抓用户 URL 无白名单;LLM 输出进查询/DOM/shell/eval;密钥、PII 或完整系统提示进了 LLM 上下文;个人数据无目的、无保留期、无删除路径;PII 发给第三方无同意;"删除账号"只翻标志而数据仍在。

## 验收
```
- [ ] 原生审计无未处理的可达严重/高危;CI 保留权威锁文件并阻断未评审脚本 - [ ] 源码与历史无密钥 - [ ] 外部输入在边界校验
- [ ] 破坏性文件操作先解析符号链接再验根/深度/所有权 - [ ] 每个受保护端点有认证与授权 - [ ] 响应带安全头 - [ ] 错误不暴露内部
- [ ] 鉴权端点限流且多实例用共享存储 - [ ] 服务端 URL 抓取有白名单 - [ ] LLM 输出用前校验编码 - [ ] 个人数据已分类、最小化、有保留期 - [ ] 删除与导出端到端可用(含备份、缓存、分析)
```

---
改编自 [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills) 的 `security-and-hardening`(MIT)。改动见 ATTRIBUTION.md。

Files in this skill

  • ATTRIBUTION.md1.2 KB
  • SKILL.md13.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.