【问题标题】:Using (and enforcing) HTTPS in an APS.NET Core 2 Application在 APS.NET Core 2 应用程序中使用(并强制执行)HTTPS
【发布时间】:2018-03-20 16:53:46
【问题描述】:

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

另外,我听说过 HSTS,并进行了一些研究,但在我看来,在 ASP.NET Core 中没有它的标准实现。我偶然发现了一些 NuGet 包,但我无法从更“官方”的提供商那里找到一个。

你能帮我理解一下吗?

【问题讨论】:

  • 你应该测试他们两个,看看他们在做什么。如果他们正在执行重定向(这似乎很可能),那么是的,警告将适用于他们两个。

标签: c# https url-rewriting asp.net-core-2.0 hsts


【解决方案1】:

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

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

  • 应用程序连接到http://webapi.example.com(如网络应用程序)应该重定向到https://webapi.example.com。端口 80 应关闭或返回状态 400(对于 nginxIIS,将这些答案中的状态代码更改为 400)。

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

考虑到您关于“官方”支持 HSTS 的第二条评论,请查看 asp.net 核心文档中的 this sample。公平地说,this 在撰写本文时仅在几个月前提交(作为2.1 milestone 的一部分),还没有很多文档。

【讨论】:

  • 感谢@Tewr 的回答。如果您能给我提供您提到的第二个项目符号(连接的应用程序)的示例,并实际关闭端口 80 或返回 400 状态,我将不胜感激。谢谢
  • 如何 是一个不同的主题——并且有据可查。 Here 是使用核心托管的起点文档。但无论如何,在生产设置中,我会使用 nginx 或 IIS 等反向代理 - 只需 google 一下如何在其中任何一个上配置端口,就有成千上万的指南。
  • 如何设置永久 400 是一个不太常见的用例,编辑了我的答案并附有一些其他问题的链接
猜你喜欢
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 2017-08-30
  • 2014-09-27
  • 2016-12-24
  • 2013-10-27
  • 1970-01-01
  • 2016-05-10
相关资源
最近更新 更多