技能使用指南

security-scan(安全扫描技能)Skill 是什么?

security-scan 安全扫描技能围绕 OWASP Top 10、身份验证与数据验证三份清单,配合自动化扫描脚本,帮你在合并代码前发现注入、越权、加密缺失等风险,并按关键/高/中/低四级给出修复优先级与审计报告。了解它怎么安装、怎么用、和 SonarQube 等工具有何区别。

安全扫描技能Skillsecurity-scan
8 个章节 约 13 分钟阅读 AI 智能生成

安全扫描技能:把 OWASP Top 10 安全审查变成开发流程里的固定动作

  • 一句话定位:security-scan 是一个面向代码安全的自检技能,围绕 OWASP Top 10、身份验证与数据验证三大检查清单,配合自动化扫描脚本,帮你在合并代码之前发现常见漏洞。
  • 核心能力:覆盖访问控制破坏、加密失败、注入等 OWASP 高频风险项,并给出从「关键」到「低」的四级漏洞严重度划分。
  • 可落地:不只是给结论,还给出修复优先级(关键/高立即修复并阻止合并、中在发布前修复、低进入待办),并把审计结果沉淀成可归档的 Markdown 报告。
  • 适合谁用:独立开发者、小型研发团队、接手遗留项目的工程师,以及大量使用 AI 生成代码、需要一道安全兜底的人。
  • 安装门槛:属于「装上就能问」的轻量技能,无需部署服务器;具体安装入口与命令以官方说明为准。

1. 该技能叫什么?如何一键安装 AI 技能提升开发效率?

技能基本信息

项目 内容
中文名 安全扫描技能Skill
英文名 security-scan
技能ID 11819
能力类型 代码安全扫描与漏洞检查
主要输入 项目代码、目录结构或具体文件片段
主要输出 安全检查结论、漏洞分级、审计报告与修复建议

它解决什么问题

写业务代码时,安全问题往往不是「不会写」,而是「想不起来检查」。访问控制有没有默认拒绝?敏感数据在传输和静态存储时是否加密?SQL 是不是用参数化查询拼出来的?密码有没有用 bcrypt/argon2 哈希?这些点在快速迭代时极易被跳过,等到上线后被扫出来,修复成本会翻好几倍。security-scan 的价值就在于把这些「靠自觉」的检查项固化成一份可反复执行的清单和脚本流程。

一键安装的思路与步骤

  1. 确认安装前提:需要一个支持 AI 技能(Skill)加载的运行环境或编程助手,以及可以运行的 Node.js 工具链(因为该技能的自动化脚本会调用 npm audit、npx eslint、npx secretlint 等命令)。如果项目本身不是 Node 生态,清单类检查依然可用,脚本部分可按官方说明做适配。
  2. 通过技能入口安装:在技能市场、技能仓库或本地技能目录中检索英文名 security-scan 或技能ID 11819,选择安装或导入。具体的安装命令、仓库地址与目录规范,以官方说明为准。
  3. 验证是否生效:安装完成后,在对话中直接提出「用 security-scan 扫描当前项目的安全风险」,观察返回内容是否包含 OWASP 检查清单条目或指向 checklists/owasp-top-10.md 之类的清单文件;若返回结构化的检查项与分级结论,即说明技能已正常加载。
  4. 固化到工作流:把「提交前跑一次安全扫描」写进团队规范,让它像跑单元测试一样成为默认动作,而不是一次性动作。

2. 该技能的主要功能和特点

  • OWASP Top 10 检查清单:内置 checklists/owasp-top-10.md 参考清单,当前明确覆盖 A01 访问控制破坏(端点授权、默认拒绝、速率限制、CORS 配置)、A02 加密失败(HTTPS 传输加密、静态加密、强算法、密钥管理)、A03 注入(参数化查询、输入验证、输出编码、禁用 eval() 处理用户输入)。
  • 身份验证专项清单:参考 checklists/auth-security.md,检查密码哈希是否使用 bcrypt/argon2、会话是否妥善管理、令牌是否安全存储、注销时是否使会话失效。
  • 数据验证专项清单:参考 checklists/data-validation.md,检查所有输入是否已验证、类型检查是否强制、是否设置大小限制、格式验证是否完成。
  • 自动化扫描脚本:提供 scripts/security-scan.sh,把依赖审计(npm audit)、静态安全分析(npx eslint --plugin security .)与密钥泄露检查(npx secretlint .)串成一条可重复执行的命令链。
  • 四级漏洞严重度模型:关键(远程代码执行、SQL 注入、身份验证绕过、敏感数据暴露)、高(XSS、CSRF、不安全反序列化、权限提升)、中(信息泄露、缺少加密、弱会话管理、日志不足)、低(缺少安全头、详细错误消息、无已知漏洞的过时依赖)。
  • 结果可归档:审计报告统一保存到 docs/reviews/security-audit-{session}.md,便于在代码评审、发版评审中作为附件引用。
  • 明确的修复流程:关键/高立即修复并阻止合并,中等级别在发布前修复,低级别进入待办事项跟踪,避免「报了一堆问题但没人排期」。
  • 最佳实践对照表:以「做/不做」两条清单给出正向与反向约束,例如使用参数化查询、验证所有输入、编码所有输出、保持依赖更新;不硬编码秘密、不信任用户输入、不暴露堆栈跟踪、不使用弱算法、不跳过身份验证检查。

和普通工具相比强在哪?单点的 npm audit 只看依赖,ESLint 只看代码风格与部分规则,而 security-scan 把它们串成流程,并补上了「清单式的设计层检查」——比如默认拒绝、CORS 配置、会话失效这些无法被单纯静态分析完整覆盖的点。

3. 如何使用该技能?

步骤一:明确扫描范围

在对话中给出项目路径或关键文件,例如:「请用 security-scan 扫描 src/api/ 下的所有接口实现和 src/auth/ 登录逻辑,重点检查访问控制与身份验证。」

步骤二:触发清单核对

技能会按 OWASP Top 10、身份验证、数据验证三份清单逐项比对。此时你可以要求它给出「已通过 / 未通过 / 需人工确认」的三态结论,避免含糊表述。

步骤三:运行自动化扫描脚本

在项目根目录执行技能提供的 scripts/security-scan.sh,其内部等价于依次执行:

  • npm audit —— 依赖漏洞审计
  • npx eslint --plugin security . —— 静态安全分析(插件可用时)
  • npx secretlint . —— 硬编码密钥与凭据检查

步骤四:处理扫描结果并分级

把脚本输出与清单结论合并,按严重度排序:关键与高危项必须当天处理并阻止合并;中危项排入本次发布前的修复计划;低危项进入待办列表。

步骤五:生成审计报告

要求技能「把本次结果按 security-audit 格式写入 docs/reviews/security-audit-{session}.md」,报告中应包含:扫描范围、命中项、对应清单条目编号(如 A03 注入)、严重级别、修复建议。

步骤六:修复后复扫

修复完成后重新执行一次脚本与清单核对,确认高危项清零,并在报告中追加复扫记录。

输入输出示例

输入:

用 security-scan 检查 src/routes/order.js 的 A03 注入风险,并说明是否需要参数化查询改造。

输出(示意):

命中 A03 注入:发现字符串拼接 SQL;风险等级:关键;建议改为参数化查询;报告已写入 docs/reviews/security-audit-20250101.md。

4. 同类型竞品对比分析

方案名称 定位 核心功能 安装/使用门槛 适用场景 优势与不足
security-scan(本技能) 对话式安全自查与清单核对 OWASP Top 10 清单、身份验证与数据验证清单、扫描脚本、四级分级、报告落盘 低,安装 AI 技能即可用,脚本需 Node 环境 提交前自查、代码评审前置、遗留项目体检 优势:门槛低、能覆盖设计层检查、附带修复优先级;不足:依赖人工触发,非持续集成内建
SonarQube / Semgrep 类静态分析平台 工程化 SAST 规则引擎、质量门禁、CI 集成 中到高,需部署服务或配置流水线 中大型团队持续集成 优势:规则丰富、可自动化卡点;不足:部署与维护成本高,业务语境理解弱
npm audit / Dependabot 类依赖扫描 依赖与供应链漏洞扫描 依赖版本漏洞比对、升级提示 低 第三方库安全治理 优势:免费、开箱即用;不足:只覆盖依赖,查不到业务代码里的注入与授权缺陷
人工安全评审 / 渗透测试 深度人工审计 业务逻辑漏洞挖掘、攻击路径验证 高,需专业人员与排期 上线前重要版本、合规审计 优势:能发现复杂逻辑漏洞;不足:成本高、频率低、无法每次提交都做

可以看出,security-scan 的生态位是「高频、低成本的第一道防线」,而不是替代专业 SAST 平台或渗透测试。

5. 该技能的典型应用场景与实际体验情况

场景一:独立开发者的上线前自查

角色:独立开发者,接手一个外包项目即将交付。痛点:没有安全团队,也没时间系统学习 OWASP。使用方式:交付前调用技能做一次全量扫描,重点核对 A01 授权与 A02 加密两项。实际体验:上手几乎没有学习成本,清单式的「打勾」过程让遗漏点一目了然;注意点是脚本里的 npm audit 只覆盖 Node 依赖,非 Node 项目需按其说明处理。

场景二:团队代码评审的前置关卡

角色:小型研发团队的技术负责人。痛点:Code Review 时安全项经常被业务逻辑讨论淹没。使用方式:要求提交者在 PR 描述中附上 docs/reviews/security-audit-{session}.md 报告链接,关键与高危项未清零不予合并。实际体验:把「安全」从主观判断变成有据可依的准入条件,评审效率明显提升;注意需要团队统一报告命名与存放路径。

场景三:接手遗留系统做安全体检

角色:新入职工程师维护一套多年未动的老系统。痛点:不知道哪些接口缺授权、密钥是否硬编码在代码里。使用方式:先用 npx secretlint . 快速排查硬编码凭据,再按 OWASP 清单逐模块核对。实际体验:能较快圈出高风险区域并形成待办清单;注意老项目可能无法直接跑通 ESLint 安全插件,应以清单核对为主。

场景四:AI 生成代码的安全兜底

角色:大量使用 AI 编程助手的开发者。痛点:生成代码能跑通不代表安全,容易忽略输入验证与输出编码。使用方式:每轮生成后追加一次「用 security-scan 检查这段代码的注入与验证风险」。实际体验:能有效拦截字符串拼接 SQL、直接 eval() 用户输入等典型问题;注意仍需人工确认业务流程层面的授权逻辑是否正确。

6. 该技能能为用户带来的价值

  • 效率提升:把分散在文档、经验和记忆里的安全检查项,收敛成一次可重复执行的流程,安全自查从「半天翻资料」缩短到「一次对话 + 一条脚本」。
  • 门槛降低:不需要先成为安全专家,按 OWASP Top 10、身份验证、数据验证三份清单逐项核对即可覆盖高频风险点。
  • 风险前移:关键与高危漏洞在合并前被拦截,避免上线后返工,修复成本远低于线上事故处置。
  • 决策可追溯:统一的报告路径与四级分级,让「修什么、先修什么、谁跟踪」有据可依,低危项也不会被无声丢弃。
  • 长期收益:随着「提交前扫描」成为团队肌肉记忆,代码库的整体安全基线会持续抬升,新人接手成本同步下降。

7. 常见问题 FAQ

Q1:怎么安装 security-scan?需要付费吗? 在支持 AI 技能的环境中检索英文名 security-scan 或技能ID 11819 导入即可。具体的安装命令、来源渠道与是否收费,以官方说明为准;本技能本身提供的扫描脚本依赖 npm audit、eslint、secretlint 等开源命令,需自备 Node 环境。

Q2:它和 SonarQube、npm audit 有什么区别? npm audit 只看第三方依赖漏洞;SonarQube 属于工程化静态分析平台,需要部署和流水线配置。security-scan 的定位是对话式自查 + 清单核对,覆盖授权、加密、注入、身份验证、数据验证等设计层检查,并给出修复优先级,适合作为高频的第一道防线,而不是替代前两者。

Q3:扫描会不会直接改我的代码? 从技能定义看,它的职责是「识别和预防安全漏洞」并输出报告与修复建议。修复动作建议由你确认后执行,尤其是涉及鉴权逻辑与加密方案时,务必人工复核。

Q4:适合谁用?非 Node 项目能用吗? 适合独立开发者、小型研发团队、接手遗留系统的工程师,以及大量使用 AI 生成代码的开发者。非 Node 项目无法直接使用 npm audit 等脚本,但 OWASP Top 10、身份验证、数据验证三份清单是语言无关的,仍可正常核对。

Q5:扫描报告存在哪里?会不会覆盖历史记录? 报告默认保存到 docs/reviews/security-audit-{session}.md,文件名中的 session 用于区分不同轮次,建议按日期或迭代号命名,形成可对比的历史审计轨迹。