SuperAPI AI 工具集

security-express

安全与审计

查看项目

更新于 10-15 13:51

技能介绍

本技能提供一套针对 Express.js 应用的安全审计模式,用于检查中间件与路由配置中的常见安全问题,适合在代码审查或安全自查时主动使用。

一、用途 面向 Express.js 应用的安全审计,围绕安全中间件、CORS 配置、认证模式与常见漏洞展开检查。

二、主要能力与检查点

  1. 安全响应头(Helmet.js):检查是否安装并使用 Helmet,由其设置 Content-Security-Policy、X-Content-Type-Options: nosniff、X-Frame-Options: DENY、Strict-Transport-Security 等。同时检查是否禁用 X-Powered-By,避免暴露框架信息,可 app.disable('x-powered-by') 或 app.set('x-powered-by', false)。
  2. CORS 配置:识别高风险写法,如 app.use(cors()) 或 origin: '*' 允许所有来源;以及 origin: true 配合 credentials: true 反射任意来源。推荐显式白名单,例如 origin: ['https://app.example.com', 'https://admin.example.com'],或使用回调函数做动态校验,仅允许指定来源。
  3. 请求体限制:检查 express.json() 与 express.urlencoded() 是否设置 limit,避免无限制导致 DoS 风险,示例为 limit: '100kb'。
  4. 认证中间件:检查受保护路由(尤其是 admin 类路由)是否挂载认证与授权中间件;注意中间件顺序,认证应位于受保护静态文件之前,例如先开放 /public,再 requireAuth,最后 /uploads。同时留意 Router 中定义在认证中间件之前的路由,是否意外缺少鉴权。
  5. 常见漏洞:SQL/NoSQL 注入(避免字符串拼接,使用参数化查询;对 MongoDB 查询校验输入类型,防止 { $gt: "" } 之类注入);路径穿越(避免用户可控路径直接拼接,使用 path.basename、path.join 并校验路径位于允许目录内);错误处理(生产环境不返回 err.stack,仅返回通用错误信息并记录日志)。
  6. 会话安全:检查 secret 是否硬编码(应使用环境变量)、cookie 的 secure、httpOnly、sameSite: 'strict'、maxAge 等配置。
  7. 速率限制:检查登录、注册、找回密码等认证端点是否使用 express-rate-limit 等限流,示例窗口 15 分钟、最多 5 次尝试。

三、使用方式 提供快速审计命令,使用 ripgrep(rg)检索代码库:检查 helmet( 的使用、x-powered-by、package.json 与 require/import 中的 helmet、cors( 配置、缺少认证中间件的路由、查询中的字符串插值、session( 配置等。另附一份加固检查清单,涵盖 Helmet、CORS、请求体大小限制、认证中间件、认证端点限流、会话 cookie 属性、硬编码密钥、错误处理、输入校验与参数化查询等条目。

四、适用场景 适用于对现有 Express.js 项目进行安全审计、代码审查前的安全检查,或按清单核对安全配置是否到位。

五、限制 本技能聚焦 Express.js 的中间件与路由安全模式,资料未说明对其他框架的覆盖情况;具体命令与代码示例以资料给出为准,未提供的收费、价格、平台支持等信息暂未提供。