hanover-computing/got-ssrf
GitHub: hanover-computing/got-ssrf
为 Node.js 的 got HTTP 客户端提供 SSRF 防护的插件,自动拒绝指向内网和本地地址的不可信请求。
Stars: 50 | Forks: 3
欢迎来到 got-ssrf 👋
[](https://github.com/hanover-computing/got-ssrf/actions/workflows/ci.yml) [](https://codecov.io/gh/hanover-computing/got-ssrf) [](https://www.npmjs.com/package/got-ssrf) [](https://www.npmjs.com/package/got-ssrf) ### 🏠 [主页](https://github.com/hanover-computing/got-ssrf) ## 为什么这很重要? SSRF 是 CSRF 的邪恶兄弟,它本质上允许针对你的后端执行 RCE:https://portswigger.net/web-security/ssrf。 这个模块会自动拒绝所有此类请求,因此你可以毫无顾虑地安全使用 got。 ## 安装 ``` npm i got-ssrf ``` ## 用法 ``` import { gotSsrf } from 'got-ssrf' await gotSsrf(url) // automatically filters requests for safety ``` 如果你还有其他想要与 got-ssrf “混合”使用的插件,请参阅 https://github.com/sindresorhus/got/blob/main/documentation/examples/advanced-creation.js 了解如何操作。示例: ``` import got from 'got' import { gotSsrf } from 'got-ssrf' import { gotInstance } from 'some-other-got-plugin' const merged = got.extend(gotSsrf, gotInstance) ``` ### 安全性 这个库针对大量奇怪的边缘情况进行了测试(URL 并不像看起来那么简单)。要了解预期的行为,请查看测试套件。 由于这个库本身不解析 URL(而是依赖于 got,got 依赖于 Node 的 `URL` 模块),一个很好的经验法则是:你对 Node `URL` 模块有什么期望,就可以对这个库有什么期望。 如果你想禁止“奇怪”的 URL(相信我,这样的 URL _有_很多),因为人们可能会尝试在其中“走私”主机名(并可能导致 `URL` 模块无法捕获的 SSRF),你需要在将 URL 传递给 got/got-ssrf _之前_,对 URL 进行输入验证(并拒绝那些“奇怪”的 URL)。 ## 运行测试 ``` npm test ``` ## 作者 👤 **Jane Jeon请随时查看 [问题页面](https://github.com/JaneJeon/got-csrf/issues)。 ## 表示支持 如果这个项目对你有帮助,请给个 ⭐️! ## 📝 许可证 版权所有 © 2023 [Jane Jeon
本项目采用 [LGPL-3.0](https://github.com/JaneJeon/got-csrf/blob/master/LICENSE) 许可。 TL;DR:你可以自由地在你的代码中原样导入并使用本库,而无需开源你的代码或将其置于与本库相同的许可证下;但是,如果你确实修改了本库并对其进行分发(直接分发或作为使用本库的代码的一部分分发),请将针对本库(且仅针对本库)的任何改进贡献回来。
标签:CISA项目, GNU通用公共许可证, got, MITM代理, Node.js, NPM包, OSV-Scalibr, RCE防护, SSRF防护, URL验证, Web安全, YAML, 中间件, 企业安全, 后端安全, 安全库, 暗色界面, 漏洞防护, 网络安全, 网络安全防护, 网络资产管理, 自动化攻击, 蓝队分析, 请求过滤, 防SSRF, 隐私保护