HackingRepo/dssrf-js

GitHub: HackingRepo/dssrf-js

dssrf 是一个 Node.js SSRF 防御库,通过严格的 URL 与网络验证帮助开发者在发起出站请求前拦截各类 SSRF 攻击。

Stars: 7 | Forks: 1

# dssrf — 面向 Node.js 的安全构造式 SSRF 防御 [![npm version](https://img.shields.io/npm/v/dssrf)](https://www.npmjs.com/package/dssrf) [![npm downloads](https://img.shields.io/npm/dm/dssrf)](https://www.npmjs.com/package/dssrf) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Security](https://img.shields.io/badge/security-SSRF%20defense-critical)](#warning) [![Dependencies](https://img.shields.io/badge/dependencies-0-brightgreen)](package.json) [![Maintainability](https://img.shields.io/codeclimate/maintainability/relunsec/dssrf)](https://codeclimate.com/github/HackingRepo/dssrf-js) [![CodSpeed](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/HackingRepo/dssrf-js?utm_source=badge) [![Contributions welcome](https://img.shields.io/badge/contributions-welcome-blue.svg)](#contributions) [![Snyk Security](https://snyk.io/test/github/HackingRepo/dssrf-js/badge.svg)](https://snyk.io/test/github/HackingRepo/dssrf-js) [![SLSA Level](https://slsa.dev/images/gh-badge-level3.svg)](https://github.com/HackingRepo/dssrf-js) [![Install size](https://packagephobia.com/badge?p=dssrf)](https://packagephobia.com/result?p=dssrf) [![Open Source Helpers](https://www.codetriage.com/hackingrepo/dssrf-js/badges/users.svg)](https://www.codetriage.com/hackingrepo/dssrf-js) [![Contributors](https://img.shields.io/github/contributors/HackingRepo/dssrf-js)](https://github.com/HackingRepo/dssrf-js/graphs/contributors) [![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ef57eeb58a153626.svg)](https://github.com/HackingRepo/dssrf-js/actions/workflows/github-code-scanning/codeql) [![CodeQL Advanced](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1552668754153632.svg)](https://github.com/HackingRepo/dssrf-js/actions/workflows/codeql.yml) [![DevSkim](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/cb866939b9153638.svg)](https://github.com/HackingRepo/dssrf-js/actions/workflows/devskim.yml) [![Node.js CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/90309d6448153644.svg)](https://github.com/HackingRepo/dssrf-js/actions/workflows/node.js.yml) `dssrf` 是一个优先考虑安全的 URL 和网络验证库,旨在消除整类 SSRF 漏洞——从基础的绕过手段到实际攻击中使用的极其高级的绕过技术。 它提供了一小部分**严格、确定且安全构造**的函数,开发人员可以在发起出站请求之前,使用它们来验证不受信任的 URL。 如果你只使用全局函数 **`is_url_safe()`**,你的应用程序将默认获得所有这些 SSRF 保护。 ## 功能 - **Unicode 规范化 (NFKC)** 以防止同形异义字攻击。 - **严格的 IPv4 验证** - 恰好 4 个八位组 - 无前导零 - 无短格式 - 无十进制/十六进制/八进制/二进制编码 - **完全禁用 IPv6** - **反斜杠和斜杠规范化** - **去除 Userinfo 中的 at 符号** - **Scheme 规范化和白名单机制** - **带有内网 IP 检测和 DNS Rebinding 检测的 DNS 解析** - **重定向安全** ## 安装与使用 ``` npm install dssrf ``` 然后在你的 Web js 应用中添加 ``` import { is_url_safe } from "dssrf"; const url = await is_url_safe("https://example.com"); if (!url) { throw new Error("SSRF attempt Detected."); } ``` 或者对于 CommonJS 风格 ``` const dssrf = require("dssrf"); const url = await dssrf.is_url_safe("https://example.com"); if (!url) { throw new Error("SSRF attempt Detected."); } ``` ## 警告 - **重定向安全** 默认情况下,`is_redirect_safe()` **不会**发起出站请求,除非你通过环境变量 `DSSRF_MAKE_REQUEST=1` 显式启用它。- 禁用时,你将失去重定向安全保护。- 启用时,`dssrf` 将执行受控的 HTTP 请求(带有 `followRedirect: false` 的 HEAD 请求),以逐跳(hop-by-hop)检查 `Location` 标头。- 这确保了准确的重定向验证,但可能会向外暴露你服务器的 IP 地址和时间信息。请仅在允许出站验证流量的环境中使用,我建议将其禁用,因为这会暴露你的服务器 IP,可能导致速度变慢,还会引起端口扫描/服务探测,因此最好在你的 HTTP 客户端中禁用跟随重定向。
标签:GNU通用公共许可证, MITM代理, Node.js, SSRF防御, Web安全, 安全防护库, 数据可视化, 暗色界面, 网络安全, 自动化攻击, 蓝队分析, 隐私保护