【问题标题】:How to make HttpClient sent safely in sonarqbue如何让 HttpClient 在 sonarqube 中安全发送
【发布时间】:2019-09-21 14:30:03
【问题描述】:

Sonarqube 扫描我们的代码并显示“确保此 http 请求已安全发送”。

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

【问题讨论】:

标签: c# sonarqube httpclient


【解决方案1】:

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

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


旁边

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

更好的实现是将 httpClient.PostAsync 包装在一个异步方法中,并开启 .ConfigureAwait(false)。

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

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

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

【讨论】:

  • 是的,我也尝试过 ConfigureAwait(false) 但声纳也检测到它。无论如何,因为文档刚刚说应该手动审查应用程序代码。
  • 总是会被检测到,就像信息一样
  • reviewed manuall jira.sonarsource.com/browse/RSPEC-4825 可能有助于链接到要查看的内容用于
猜你喜欢
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 2012-01-20
  • 2013-01-23
  • 2020-07-07
相关资源
最近更新 更多