你的功能请求是否与问题相关?请描述。
我认为经验较少的开发人员不知道Axios在优先考虑绝对URL而不是BaseURL属性配置方面的行为。
这种情况可能会在以下用例中产生SSRF类型的漏洞:
config.defaults.BaseURL = 'http://mysite.com';
path = req.query.path;
axios.get(path);
恶意用户可以输入类似' http://evil.com/ '(绝对URL)的路径值,并将请求指向不同的站点。
描述你希望的解决方案
虽然可以验证用户输入不包含绝对URL,但我认为更安全的做法是有一个配置属性,允许或拒绝绝对URL。示例:allowAbsoluteURL = false/true
值true反映正常的Axios行为。
值false在满足以下条件时,requests中的每个方法都会生成异常:
- restclient方法接收到一个绝对URL作为参数。
- restclient配置中明确声明了BaseURL的值。
- BaseURL的值不是作为参数接收到的绝对URL的前缀。
描述你考虑过的替代方案
- 无响应*
其他上下文/截图
- 无响应*
3条答案
按热度按时间mlmc2os51#
团队成员,我认为这是一个安全问题。就我所看到的文档中没有提到,在设置BaseURL属性后,完整URL总是会被解析为这样的格式。
我知道这可能是一个破坏性的变化,但如果默认情况下设置了BaseURL,它应该永远不会尝试识别路径参数是否是完整的,并且总是尝试使用baseURL+path创建最终的URL。
sg2wtvxw2#
你好,
我想处理这个问题。请将它分配给我。
mqkwyuun3#
刚刚推送了一个PR,允许您通过请求修改名为
axios.defaults.allowAbsoluteUrls
的参数或提供一个名为allowAbsoluteUrls
的配置参数来更改此行为。将参数设置为false
将导致指定的路径与基本URL结合,无论其是否为绝对路径。此值默认为true
,保留原始行为。最小示例: 将发出对
https://www.miketoscano.com/https://www.google.com
(组合URL)的请求最小示例2: 将发出对
http://someurl.com/http://someotherurl.com/
(组合URL)的请求