在 APS.NET Core 2 应用程序中使用(并强制执行)HTTPS

Using (and enforcing) HTTPS in an APS.NET Core 2 Application

我正在研究在 ASP.NET Core 2 应用程序上实施(和强制执行)HTTPS,我看到了 Enforcing HTTPS in an ASP.NET Core app,但这让我感到困惑。它提到了两种方法:使用 RequireHttpsAttribute 或使用 URL 重写,但是在页面开头的警告中,他们提到不要使用 RequireHttpsAttribute 因为它正在进行重定向,但是URL 重写不也是在做什么吗?那么,我们是否可以将它们中的任何一个用于 Web API,即使它们收到 "sensitive information"(如文档页面中的警告中所述)。

此外,我听说过 HSTS,并且做了一些研究,但在我看来 ASP.NET Core 中似乎没有针对它的标准实现。我偶然发现了一些 NuGet 包,但我找不到来自更多 "official" 提供商的包。

你能帮我理解一下吗?

您的困惑可能在于本文的目标是关于 non-WebAPI 应用程序。因此警告 - 不适用于 WebAPI。不要对 WebAPI 使用这两种方法中的任何一种。

  • Users 连接到 http://example.com 上的应用程序(通过键入url 在浏览器中)应该重定向到 https://example.com。这可以使用两种方法之一来完成。

  • 连接到 http://webapi.example.com (like a web application) should be NOT be redirected to https://webapi.example.com. Port 80 should either be closed or return status 400 (for nginx and IIS 的应用程序,将这些答案中的状态代码更改为 400)。

用户不能被技术安全细节所累。但是,开发人员应该充分了解并且可以直接连接到 https,而无需任何重定向。

考虑到您关于 "official" 支持 HSTS 的第二个评论,请查看 this sample from the asp.net core docs. To be fair, this was only committed a few months ago (as part of 2.1 milestone) 在撰写本文时,还没有很多文档。