如何修复此服务器端请求伪造(SSRF)漏洞?

问题描述 投票:0回答:1

我们的解决方案中存在问题(我们正在使用 .net core),SNYK 漏洞扫描程序向我们显示,我们在以下代码中存在服务器端请求伪造 (SSRF) 漏洞:

public async Task<string> GetHtml(string urlContent)
        {
            HttpClient httpClient = new HttpClient();

            try
            {
                urlContent = Uri.EscapeUriString(urlContent);
                using (httpClient)
                {
                    httpClient.DefaultRequestHeaders.TryAddWithoutValidation(HeaderAccept, HeaderAcceptValue);
                    httpClient.DefaultRequestHeaders.TryAddWithoutValidation(HeaderAcceptEncoding, HeaderAcceptEncodingValue);
                    httpClient.DefaultRequestHeaders.TryAddWithoutValidation(HeaderUserAgent, HeaderUserAgentValue);
                    httpClient.DefaultRequestHeaders.TryAddWithoutValidation(HeaderAcceptCharset, HeaderAcceptCharsetValue);
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

                    var response = await httpClient.GetAsync(new Uri(TextHelper.RedirectUrlNull(urlContent))); 

问题应该是对 urlContent 变量的引用以及它与响应变量的关系,但我不知道如何缓解该漏洞。我感谢你的帮助。

asp.net-core security .net-core ssrf
1个回答
0
投票

如果不知道

GetHtml
从哪里获取其参数(URL),我们无法确认它是否是一个漏洞。

例如,如果用户可以任意提供 URL,则这将是一个漏洞。在这种情况下,为了缓解这种情况,您必须提前知道安全 URL 的列表或模式,以验证

urlContent

© www.soinside.com 2019 - 2024. All rights reserved.