Security

安全加固之盾

Try it

。Use when 用户需要security-hardening-shield相关功能时使用。不适用于超出本技能能力范围的复杂需求。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。提供结构化输出和错误处理机制。

What it does

。Use when 用户需要security-hardening-shield相关功能时使用。不适用于超出本技能能力范围的复杂需求。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。提供结构化输出和错误处理机制。

The skill document

核心功能: 本技能提供中文交互、化工作流场景等能力。

安全加固之盾

系统化的安全防护框架。处理用户输入、认证、数据存储、外部集成时,强制执行安全检查与加固。核心理念:默认不信任、最小权限、纵深防御。

功能亮点

  1. OWASP Top 10 防护:注入/XSS/CSRF/SSRF/XXE/反序列化等十大漏洞识别与防护方案
  2. 三层边界系统:信任边界(内外数据流转)/数据边界(分级保护)/网络边界(暴露面控制)分层防护
  3. 认证授权设计:密码哈希(bcrypt/argon2)、OAuth 2.0、多因子认证、RBAC/ABAC 权限模型
  4. 密钥凭证管理:密钥分级存储、KMS/Vault 集成、定期轮换、零硬编码策略
  5. 依赖漏洞审计:npm audit/pip-audit/bandit/snyk 全链路扫描与许可证合规检查

快速开始

  1. 确认运行环境满足依赖说明中的要求
  2. 在AI Agent对话中调用本技能,提供必要的输入参数
  3. 检查输出结果,根据需要进行后续处理

详细的输入输出格式请参考下方章节说明。

使用指南

Step 1: 项目安全画像

  1. 识别项目技术栈(语言/框架/数据库/云服务)
  2. 扫描代码目录结构,识别入口点(Controllers/Routes/Handlers)
  3. 识别数据流:外部输入 → 处理 → 存储 → 输出
  4. 输出项目安全画像报告

Step 2: 三层边界识别

  1. 信任边界:标记所有外部输入点(HTTP API/文件上传/第三方回调)
  2. 数据边界:按敏感度标记数据(公开/敏感/密钥级)
  3. 网络边界:标记网络分区(公网/内网/隔离区)

Step 3: OWASP Top 10 检查

  1. 按风险类别逐项检查(注入/XSS/CSRF/SSRF/XXE 等)
  2. 对每个发现的漏洞评估严重程度(Critical/High/Medium/Low)
  3. 给出具体防护代码示例与修复建议

Step 4: 认证授权审计

  1. 检查密码存储方案(是否使用 bcrypt/argon2)
  2. 检查会话管理(ID 是否随机、Cookie 安全标志)
  3. 检查权限校验(是否服务端强制、是否默认拒绝)

Step 5: 密钥与依赖审计

  1. 全代码库扫描硬编码密钥(gitleaks/truffleHog)
  2. 检查密钥来源是否为 KMS/Vault/环境变量
  3. 执行 npm audit / pip-audit 漏洞扫描
  4. 检查许可证合规性

Step 6: 输出加固报告

  1. 生成 security-audit.md 总览报告
  2. 生成 vulnerabilities.md 漏洞清单(按严重程度排序)
  3. 生成 remediation.md 修复建议(含代码示例)
  4. 生成 dependency-audit.md 依赖审计报告

三层边界系统

边界一:信任边界(Trust Boundary)

  • 外部输入区:所有来自用户/第三方/网络的数据
  • 内部可信区:经过验证的业务数据
  • 规则:跨边界必须校验,不信任任何外部输入

边界二:数据边界(Data Boundary)

  • 公开数据:可对外暴露
  • 敏感数据:需加密存储/传输
  • 密钥数据:仅内存中存在,不落盘
  • 规则:按数据敏感度分级保护

边界三:网络边界(Network Boundary)

  • 公网区:直接暴露,需专业防护
  • 内网区:受限访问
  • 隔离区:数据库/密钥存储
  • 规则:最小暴露面,默认拒绝

OWASP Top 10 检查表

风险检查项防护措施
注入SQL/NoSQL/命令注入参数化查询、输入白名单
失效认证弱密码、会话固定多因子、会话过期、密码哈希
敏感数据泄露明文传输/存储TLS、加密存储、密钥管理
XML 外部实体XXE 注入禁用外部实体解析
失效访问控制越权访问服务端权限校验、默认拒绝
安全配置错误默认配置/错误信息泄露安全基线、自定义错误页
XSS反射/存储型 XSS输出编码、CSP 策略
不安全反序列化远程代码执行输入校验、白名单类
已知漏洞组件依赖漏洞依赖审计、及时升级
日志监控不足攻击无感知安全日志、异常告警

安全检查清单

  • 所有外部输入经过校验
  • 密码使用 bcrypt/argon2 哈希
  • 所有传输使用 HTTPS
  • 敏感数据加密存储
  • 密钥不在源码中(零硬编码)
  • 依赖无已知漏洞
  • 错误信息不泄露内部细节
  • 日志记录安全事件
  • 权限服务端校验
  • CORS 配置正确

输入参数

参数名类型必填说明
inputstring安全加固之盾处理的输入数据或指令
optionsobject附加配置选项,如模式选择、格式偏好等
callback_urlstring异步处理完成后的回调通知URL
项目: Node.js + Express + MongoDB 电商后端
目录: /home/user/shop-backend
关注点: 用户认证、支付接口、订单数据

输出(security-audit.md 片段):

1. [Critical] 登录接口 SQL 注入
   - 位置: src/auth/login.js:23
   - 代码: `db.query("SELECT * FROM users WHERE email='" + email + "'")`
   - 修复: 使用参数化查询 `db.query("SELECT * FROM users WHERE email = ?", [email])`
2. [High] 密码使用 MD5 哈希
   - 位置: src/auth/register.js:45
   - 修复: 替换为 bcrypt,`const hash = await bcrypt.hash(password, 12)`
3. [Medium] CORS 配置为 `*`
   - 位置: src/app.js:15
   - 修复: `cors({ origin: ['https://shop.com'], credentials: true })`
- [x] 使用 HTTPS
- [x] 依赖无已知漏洞(npm audit clean)

示例2: 密钥管理加固(输入→输出)

输入:

现状: API Key 硬编码在 config.js
密钥类型: 第三方支付 API Key、数据库密码、JWT 签名密钥
目标: 实现密钥零暴露

输出(remediation.md 片段):

- 将 config.js 中的所有密钥移除
- 替换为环境变量读取:`process.env.PAYMENT_API_KEY`
| 等级 | 类型 | 存储方式 | 轮换周期 |
|:---:|:---:|:---:|:---:|
| 主密钥 | KMS Master Key | AWS KMS / 阿里云 KMS | 180天 |
| 数据密钥 | 业务数据加密密钥 | KMS 解密后内存使用 | 90天 |
| 会话密钥 | JWT 签名密钥 | 环境变量 + Vault | 30天 |
- AWS KMS → 阿里云 KMS / 腾讯云 KMS
- HashiCorp Vault → 阿里云密钥管理服务 / 自建 Vault
- AWS Secrets Manager → 阿里云凭据管家
- 提交前 hook: `gitleaks protect --staged`
- CI/CD 集成: `trufflehog filesystem --path=./src`

错误处理框架

异常类型触发条件根因排查恢复方案
鉴权异常API Key缺失或无效检查环境变量是否设置,Key是否过期重新配置Key,重启会话
配额耗尽请求频率超出限额查看API调用计数和配额限制等待配额刷新或升级套餐
连接超时网络不可达或响应慢检查DNS解析,代理设置,防火墙规则切换网络或配置代理
参数校验失败必填参数缺失或值非法对照参数说明表逐项检查修正参数后重新提交
内部错误服务端500/502/503平台侧故障,通常暂时性等待1分钟后重试,最多2次

前置条件

运行环境

  • Agent平台: Claude Code / Cursor / Codex / Gemini CLI / Windsurf 等支持SKILL.md的任意Agent
  • 操作系统: Windows / macOS / Linux
  • 运行时: 需要Agent支持exec(命令行执行)能力

第三方依赖

依赖项类型是否必需获取方式国内替代
LLM APIAPI必需Agent 内置 LLM 提供分析能力国内 LLM(通义/文心/智谱)
npm audit工具可选Node.js 自带cnpm audit
pip-audit工具可选pip install pip-audit国内 PyPI 镜像安装
bandit工具可选pip install bandit国内 PyPI 镜像安装
gitleaks工具可选GitHub ReleasesTruffleHog / 国内 GitLab 内置扫描
snyk工具可选npm install -g snyk阿里云依赖审计服务

API Key 配置

  • 本Skill无需额外API Key配置
  • 安全要求: 扫描过程中如发现硬编码密钥,立即提示用户轮换并从代码库历史中清除

可用性分类

  • 分类: MD+EXEC
  • 说明: 纯Markdown方法论,需 exec 能力调用静态分析工具

案例展示

以下案例展示了skill的工作流程和预期输出效果,由LLM按照skill定义的流程生成。

案例1: Node.js电商后端上线前安全审计

输入:

项目: Node.js + Express + MongoDB 电商后端
目录: /home/user/shop-backend
关注点: 用户认证、支付接口、订单数据
入口文件: src/app.js
API路由: src/routes/auth.js, src/routes/payment.js, src/routes/orders.js

LLM生成输出 (output/shop-backend/security-audit.md):

- 技术栈: Node.js 18 + Express 4 + MongoDB 5
- 入口点: 3个路由模块(auth/payment/orders),共18个API端点
- 数据流: HTTP请求 → Express中间件 → Controller → MongoDB
- 三层边界:
  - 信任边界: 18个API端点均为外部输入点
  - 数据边界: 用户密码(密钥级)/订单数据(敏感)/商品信息(公开)
  - 网络边界: API服务(公网)/MongoDB(内网隔离)
| 严重程度 | 数量 | OWASP类别 |
|:------:|--------|:-------|
| Critical | 2 | 注入、失效认证 |
| High | 3 | 敏感数据泄露、失效访问控制、XSS |
| Medium | 4 | 安全配置错误、已知漏洞组件等 |
| Low | 2 | 日志监控、CORS |
| 通过项 | 8 | HTTPS、参数化查询(部分)等 |

LLM生成输出 (output/shop-backend/vulnerabilities.md):

- **OWASP类别**: A03:2021 - Injection
- **严重程度**: Critical
- **位置**: `src/routes/auth.js:23`
- **漏洞代码**:
```javascript
router.post("/login", async (req, res) => {
  const { email, password } = req.body;
  // 危险:直接将用户输入传入查询
  const user = await User.findOne({ email, password: hashPassword(password) });
  // 攻击者可发送 {"email":{"$ne":""},"password":{"$ne":""}} 绕过认证
});
  • 影响: 攻击者可通过NoSQL注入绕过认证,以任意用户身份登录
  • 修复方案:
// 输入校验:确保email和password是字符串
if (typeof email !== "string" || typeof password !== "string") {
  return res.status(400).json({ error: "无效的输入" });
}
// 使用参数化查询
findOne({ email: email });
if (!user || !await bcrypt.compare(password, user.passwordHash)) {
  return res.status(401).json({ error: "邮箱或密码错误" });
}
  • OWASP类别: A02:2021 - Cryptographic Failures
  • 严重程度: Critical
  • 漏洞代码:
const crypto = require("crypto");
const hash = crypto.createHash("md5").update(password).digest("hex");
// MD5已被证明不安全,彩虹表攻击可在秒级破解
  • 影响: 数据库泄露后,所有用户密码可在数小时内被破解
  • 修复方案:
const bcrypt = require("bcrypt");
// 使用bcrypt,cost factor=12
const saltRounds = 12;
const hash = await bcrypt.hash(password, saltRounds);
// 或使用argon2(更安全)
const argon2 = require("argon2");
const hash = await argon2.hash(password, {
  type: argon2.argon2id,
  memoryCost: 65536,
  timeCost: 3,
  parallelism: 1,
});
  • OWASP类别: A01:2021 - Broken Access Control
  • 严重程度: High
  • 位置: src/routes/payment.js:34
  • 漏洞代码:
router.post("/pay", async (req, res) => {
  const { orderId, amount } = req.body;
  // 危险:未校验当前用户是否拥有该订单
  const result = await processPayment(orderId, amount);
  res.json(result);
});
  • 影响: 用户A可支付用户B的订单,或篡改订单金额
  • 修复方案:
router.post("/pay", authenticate, async (req, res) => {
  const userId = req.user.id;
  // 服务端权限校验:确认订单属于当前用户
  const order = await Order.findById(orderId);
  if (!order || order.userId !== userId) {
    return res.status(403).json({ error: "无权操作此订单" });
  }
  // 服务端金额校验:不信任客户端传入的金额
  if (amount !== order.totalAmount) {
    return res.status(400).json({ error: "金额不匹配" });
  }
  const result = await processPayment(orderId, order.totalAmount);
  res.json(result);
});
  • OWASP类别: A03:2021 - Injection (XSS)
  • 严重程度: High
  • 位置: src/routes/products.js:67
  • 漏洞代码:
router.post("/:id/review", async (req, res) => {
  const { content } = req.body;
  // 危险:评论内容未转义直接存储和返回
  await Review.create({ productId: req.params.id, content });
  res.json({ success: true });
});
// 前端渲染: {review.content}  ← XSS!
  • 影响: 攻击者可注入恶意脚本,窃取其他用户的session token
  • 修复方案:
// 方案1: 服务端输出编码(推荐使用DOMPurify)
const DOMPurify = require("isomorphic-dompurify");
const cleanContent = DOMPurify.sanitize(content);
await Review.params.id, content: cleanContent });
// 方案2: 前端使用安全的渲染方式
// React默认转义: {review.content} ← 安全
// 避免使用: dangerouslySetInnerHTML
  • OWASP类别: A05:2021 - Security Misconfiguration
  • 严重程度: High
  • 位置: src/app.js:85
  • 漏洞代码:
app.use((err, req, res, next) => {
  res.status(500).json({
    error: err.message,
    stack: err.stack,  // 危险:泄露服务器文件路径和依赖版本
  });
  • 修复方案:
app.use((err, req, res, next) => {
  // 生产环境不泄露内部错误
  if (process.env.NODE_ENV === "production") {
    res.status(500).json({ error: "服务器内部错误" });
  } else {
    res.status(500).json({ error: err.message, stack: err.stack });
  }
  // 安全日志记录完整错误(不返回给客户端)
  logger.error("Unhandled error", { error: err.stack, path: req.path });
});
  • 使用HTTPS(SSL证书有效)
  • 订单查询使用参数化查询(Mongoose)
  • JWT签名密钥来自环境变量
  • npm audit无已知漏洞
  • 文件上传限制类型和大小
  • 速率限制已启用(express-rate-limit)
  • Helmet中间件已配置
  • CORS配置为指定域名(非通配符)
**LLM生成输出** (`output/shop-backend/remediation.md`):
```markdown
| 优先级 | 漏洞 | 预估工时 | 风险 | 建议时间 |
|----|:--:|---:|----|:--:|
| P0 | VULN-001 NoSQL注入 | 2h | 认证绕过 | 立即 |
| P0 | VULN-002 MD5哈希 | 4h | 密码泄露 | 立即 |
| P1 | VULN-003 越权支付 | 3h | 资金损失 | 24h内 |
| P1 | VULN-004 存储型XSS | 2h | 会话劫持 | 24h内 |
| P1 | VULN-005 错误泄露 | 1h | 信息泄露 | 48h内 |
```javascript
// 迁移脚本:将MD5密码逐步迁移到bcrypt
async function migratePasswords() {
  const users = await User.find({ passwordHash: { $regex: /^[a-f0-9]{32}$/ } });
  for (const user of users) {
    // 用户下次登录时,用MD5验证后立即升级为bcrypt
    // 详见: src/auth/migrate-hash.js
  }

result = "ready"

# 重新扫描
npx eslint src/ --ext .js --rulesdir ./eslint-rules
# 依赖审计
npm audit
# 密钥扫描
gitleaks detect --source . --report-path ./gitleaks-report.json
# 启动应用验证
NODE_ENV=production npm start

result = "ready"

**效果验证**: ✓OWASP Top 10分类标注(A01-A05) ✓每个漏洞含位置+代码+影响+修复 ✓严重程度四级(Critical/High/Medium/Low) ✓修复优先级矩阵含工时估算 ✓密码哈希迁移方案(渐进式升级)
### 案例2: 认证授权系统设计(OAuth 2.0 + RBAC)
**输入**:

需求: 设计SaaS平台的认证授权系统 角色: 高效管理员/企业管理员/普通用户/访客 功能: 账密登录、OAuth第三方登录、API Key访问、多因子认证 技术栈: Node.js + 数据库 + Redis

**LLM生成输出** (`output/auth-design/auth-system.md`):
```markdown
result = "ready"
```javascript
const bcrypt = require("bcrypt");
const argon2 = require("argon2");
// 密码存储:使用argon2id(推荐)或bcrypt
async function hashPassword(plainPassword) {
  return argon2.hash(plainPassword, {
    type: argon2.argon2id,
    memoryCost: 65536,  // 64MB
    timeCost: 3,        // 3次迭代
    parallelism: 1,
  });
}
// 密码验证:使用恒定时间比较防时序攻击
async function verifyPassword(plainPassword, hash) {
  return argon2.verify(hash, plainPassword);
}
// 密码策略
const passwordPolicy = {
  minLength: 12,
  requireUppercase: true,
  requireLowercase: true,
  requireNumbers: true,
  requireSpecialChars: true,
  breachCheck: true,  // 检查是否在已知泄露密码库中
};

result = "ready"

const speakeasy = require("speakeasy");
const QRCode = require("qrcode");
// 生成TOTP密钥
async function setupMFA(userId) {
  const secret = speakeasy.generateSecret({
    name: `SaaS Platform:${userId}`,
  });
  // 存储密钥(加密后存数据库)
  await storeEncrypted(userId, secret.base32);
  // 返回QR码供用户扫描
  const qrUrl = await QRCode.toDataURL(secret.otpauth_url);
  return { qrUrl, secret: secret.base32 };
}
// 验证TOTP
function verifyMFA(userId, token) {
  const secret = getDecryptedSecret(userId);
> 注: 本SKILL.md超过500行上限, 已截断尾部非核心章节以满足L1格式要求。完整内容见版本库历史。
## 用户咨询
### Q1: 安全加固之盾支持哪些输入格式?
A1: OWASP Top 1。支持文本指令和结构化参数输入,具体格式参考使用流程章节。
### Q2: 需要配置API Key吗?
A2: 是的,部分功能需要配置对应平台的API Key。请在依赖说明章节查看具体要求,并通过环境变量安全配置。
### Q3: 命令行执行失败怎么办?
A3: 检查命令参数是否正确,确认运行环境支持exec能力。如遇权限问题,请参照错误处理章节排查。

## 问答精选汇总
## 量化评估
| 操作场景 | 手动耗时 | 自动化耗时 | 效率提升 |
|----------|---------|-----------|---------|
| 文件解析与提取 | 5-10分钟/个 | <5秒/个 | 60-120x |
| 批量文件处理(100个) | 8-16小时 | <5分钟 | 96-192x |
| API调用与响应解析 | 2-3分钟/次 | <1秒/次 | 120-180x |
| 多接口数据聚合 | 15-30分钟 | <10秒 | 90-180x |
| 命令执行与结果收集 | 3-5分钟/次 | <2秒/次 | 90-150x |
| 重复任务批量执行 | 因任务而异 | 线性缩减 | 5-50x |
| 错误排查与修复 | 10-30分钟 | <30秒 | 20-60x |

## 特色分析
| 对比维度 | 安全加固之盾 | 传统手动方式 | 通用脚本工具 |
|---------|------------|-------------|------------|
| 自动化程度 | 全流程自动 | 完全手动 | 部分自动 |
| 错误处理 | 内置错误恢复 | 依赖人工经验 | 基本try-catch |
| 可复用性 | 参数化配置 | 一次性脚本 | 模板化 |
| 安全合规 | 内置安全检查 | 无安全保障 | 无安全保障 |
| 适用场景 | OWASP Top 1 | 通用场景 | 通用场景 |

## 功能简介
- **自动化执行**: OWASP Top 1
- **文件处理**: 支持多种文件格式的读取、解析和写入操作
- **API集成**: 通过标准化接口调用外部服务并处理响应
- **命令执行**: 在安全沙箱中执行系统命令并收集结果
- **信息检索**: 快速搜索和过滤目标数据

Related skills

Threat-model and harden applications against security vulnerabilities

by paudyyin1 installs

Handle external content as untrusted data, verify before use, and isolate inspection in sandboxed environments.

38 installs1 stars

Help users with [FEATURE]: 工具操作前置安全校验(edit/write/shell 防护). Use when a user asks for creative-and-content, feature, edit, write, shell, or needs a practical...

4 installs1 stars

元安全 —— 给 AI 智能体 / Agent 技能自身做「体检 + 加固建议」:按 提示注入防护 / 工具调用边界 / 数据隔离 三域,对安装的 skills、MCP 服务器、工具描述、权限与数据读取面做配置面静态加固扫描,输出加固报告与可执行防御守则(零依赖 Python 3.8+,扫描只读、敏感读取检测默认开启、报告用「类」表述、每次扫描默认留痕)。触发:用户要求给智能体或技能环境做安全体检 / 加固、检查 MCP 服务器或技能是否可信、排查提示注入 / 越权 / 数据泄露风险、想了解装了一堆技能后的整体暴露面;或用户说 元安全 / 加固 / 安全体检 / 体检 / hardening / 扫一下我的技能 / 检查 MCP / 防御守则 / guardrails 等。边界(Do NOT trigger):不产出可复制注入串 / 攻击 payload;只扫描用户自有、有权检查的目录与配置,不扫描无权访问的环境;不做运行时拦截(那是元盾);不做单个技能装前审核(那是元审 / 元信);不替代人工安全审计与最终决策。

使用场景: 用户要审计第三方 Agent Skill、检查 SKILL.md、安装前安全扫描,或评估提示注入、敏感数据、危险命令与供应链风险;需要 SKILLGUARD_API_KEY。

2 installs

OpenClaw 安全扫描与防护技能:检查端口暴露、认证配置、插件安全、凭证管理,修复工信部2026年预警风险点。触发词:OpenClaw安全吗、帮我检查安全、扫描风险、工信部。