一份精选的 Node.js 安全资源列表。



向 Liran Tal 学习 Node.js 安全编码技术与最佳实践
目录
工具
Web 框架加固
GitHub Actions 与 CI/CD 安全
静态代码分析
- eslint-plugin-security - 用于 Node 安全的 ESLint 规则。该项目有助于识别潜在的安全热点,但会误报大量需要人工分诊的误报。
- tslint-plugin-security - 用于 Node 安全的 TSLint 规则。该项目有助于识别潜在的安全热点,但会误报大量需要人工分诊的误报。
- safe-regex - 通过将星号高度限制为 1 来检测可能具有灾难性指数时间复杂度的正则表达式。
- vuln-regex-detector - 该模块可让你检查正则表达式是否存在漏洞。在 JavaScript 中,正则表达式(regexes)可能“存在漏洞”:容易受到灾难性回溯的影响。如果你的应用程序在客户端使用,这可能造成性能问题。在服务器端,这可能使你面临正则表达式拒绝服务(REDOS)攻击。
- regolith - 为 TypeScript 打造的正则表达式库,旨在防止 ReDoS 攻击。我为 Rust Regex 库编写了 TypeScript 绑定,以防止正则表达式拒绝服务攻击。
- git-secrets - 防止你将机密信息和凭据提交到 git 仓库。
- DevSkim - DevSkim 是一组 IDE 插件和规则,提供安全“linting”能力。它还支持 CLI,因此可以集成到 CI/CD 流水线中。
- ban-sensitive-files - 根据文件名规则库检查待提交的文件名,以防止在 Git 中存储敏感文件。它还会检查某些文件是否包含敏感内容(例如 .npmrc 文件中的 authToken)。
- NodeJSScan - 面向 Node.js 应用程序的静态安全代码扫描器。它包含简洁的 UI,可以指出问题所在位置以及如何修复。
- NodeSecure CLI - Node.js CLI,允许你深入分析给定 npm 包或目录的依赖树。
- Trust But Verify - TBV 将 npm 包与其源仓库进行比较,以确保生成的产物一致。
- lockfile-lint - 对 lockfile 进行 lint,以改进安全性和信任策略,避免恶意包注入及其他不安全配置。
- pkgsign - 用于签名和验证 npm 与 yarn 包的 CLI 工具。
- semgrep - 开源、离线、易于定制的多语言静态分析工具。本列表中的其他一些工具(NodeJSScan)使用 semgrep 作为其引擎。
- npm-scan - 一个可扩展的、基于启发式的已安装 npm 包漏洞扫描工具。
- js-x-ray - JavaScript 和 Node.js SAST 扫描器,能够检测各种已知的恶意代码模式(不安全导入、不安全语句、不安全 RegEx、编码字面量、压缩和混淆代码)。
- cspscanner - CSP Scanner 帮助开发人员和安全专家轻松检查和评估站点的内容安全策略(CSP)。
- eslint-plugin-anti-trojan-source - ESLint 插件,用于检测并防止特洛伊木源代码攻击进入你的代码库。
- sdc-check - 一个小工具,用于告知你项目依赖列表中的潜在风险
- fix-lockfile-integrity - 一个 CLI 工具,用于将 npm lockfile 中较弱的完整性哈希(sha1)修复为更安全的完整性哈希(sha512)。
- Bearer - 一个 CLI 工具,用于根据 OWASP Top 10 发现并帮助你修复代码中的安全和隐私风险。
- GuardDog - GuardDog 是一个 CLI 工具,用于识别恶意的 PyPI 和 npm 包
- repolyze - 分析 git 源代码仓库的健康信号和项目关键指标
- eslint-plugin-node-security - 针对 Node.js 核心 API(fs、child_process、vm、path、Buffer)的 ESLint 规则,可捕获命令注入、路径遍历和代码执行模式,并在每条报告中附带 CWE 参考。
动态应用安全测试
- PurpleTeam - 一个安全回归测试 SaaS 和 CLI,非常适合插入到你的构建流水线中。你无需自己编写任何测试。purpleteam 足够智能,知道如何测试,你只需提供一个 Job 文件,告诉 purpleteam 你想测试什么。
输入验证与输出编码
安全组合