首页 > 解决方案 > 如何使 HttpClient 在 sonarqbue 中安全发送

问题描述

Sonarqube 扫描我们的代码并显示“确保此 http 请求已安全发送”。在此处输入图像描述

除了使用 Singleton 模式之外,还有其他正确的方法来实现 HttpClient 吗?我还尝试使用 sonarqube 建议的 ConfigureAwait(false) 女巫。这是链接https://rules.sonarsource.com/csharp/RSPEC-3216 但是 sonarqube 检测到它并说同样的错误。

标签: c#sonarqubehttpclient

解决方案


在这里阅读:https ://sonarcloud.io/documentation/user-guide/security-reports/

此类问题是安全热点而不是漏洞。它告诉您应该手动检查此行,如果可以为当前代码停用它。


在任务上使用 .Result 时要小心。在错误的地方,您可能会遇到死锁(例如,从 UI 上下文调用)

更好的实现是将 httpClient.PostAsync 包装在带有 .ConfigureAwait(false) 的异步方法中。

await _httpClient.PostAsync(apiURL, content).ConfigureAwait(false);

然后,如果需要,您可以使用 .Result 调用此方法

ConfigureAwait(false) 告诉等待之后的代码不必在调用者上下文上运行(避免死锁)。


推荐阅读