HackingRepo/dssrf-js
GitHub: HackingRepo/dssrf-js
dssrf 是一个 Node.js SSRF 防御库,通过严格的 URL 与网络验证帮助开发者在发起出站请求前拦截各类 SSRF 攻击。
Stars: 7 | Forks: 1
# dssrf — 面向 Node.js 的安全构造式 SSRF 防御
[](https://www.npmjs.com/package/dssrf)
[](https://www.npmjs.com/package/dssrf)
[](LICENSE)
[](#warning)
[](package.json)
[](https://codeclimate.com/github/HackingRepo/dssrf-js)
[](https://codspeed.io/HackingRepo/dssrf-js?utm_source=badge)
[](#contributions)
[](https://snyk.io/test/github/HackingRepo/dssrf-js)
[](https://github.com/HackingRepo/dssrf-js)
[](https://packagephobia.com/result?p=dssrf)
[](https://www.codetriage.com/hackingrepo/dssrf-js)
[](https://github.com/HackingRepo/dssrf-js/graphs/contributors)
[](https://github.com/HackingRepo/dssrf-js/actions/workflows/github-code-scanning/codeql)
[](https://github.com/HackingRepo/dssrf-js/actions/workflows/codeql.yml)
[](https://github.com/HackingRepo/dssrf-js/actions/workflows/devskim.yml)
[](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安全, 安全防护库, 数据可视化, 暗色界面, 网络安全, 自动化攻击, 蓝队分析, 隐私保护