【问题标题】:Stop HSTS HTTPS Enforcement停止 HSTS HTTPS 强制
【发布时间】:2015-05-28 15:16:20
【问题描述】:

所以我把它放在我的 Global.asax.cs 中以使用 HSTS 强制 HTTPS

protected void Application_BeginRequest(Object sender, EventArgs e)
{
      if (!Request.IsLocal && AppSettings.IsSSLEnforced)
      {
          switch (Request.Url.Scheme)
          {
             case "https":
                 Response.AddHeader("Strict-Transport-Security", "max-age=300");
                 break;
             case "http":
                 var path = "https://" + Request.Url.Host + Request.Url.PathAndQuery;
                 Response.Status = "301 Moved Permanently";
                 Response.AddHeader("Location", path);
                 break;
           }
       }
}

现在,问题是这种强制执行基于我的应用程序中的一个设置,该设置决定是否强制执行,当它设置为不强制执行时,它仍然是强制执行的。如何让它清除并停止重定向?

我尝试在其中添加一个 else

Response.AddHeader("Strict-Transport-Security", "max-age=0");

将 max-age 设置为 0 无效。如何删除它?似乎 max-age 不起作用(我使用的是 chrome),因为它已经超过 300 秒(5 分钟)

编辑:我现在尝试在 IE 中加载,但它不执行重定向,我尝试进入 chrome 设置并删除条目,但仍然没有。

【问题讨论】:

  • 当您说您已进入 Chrome 设置并删除了该条目时,您是否出于chrome://net-internals/#hsts 这样做?
  • @StevenV 是的,我做到了。我用的是本地的有关系吗?我输入了我在 IIS (abc.christest.com) 中设置的 url 来删除甚至查询它,它说没有结果..

标签: c# asp.net ssl https hsts


【解决方案1】:

一旦您将 HSTS 标头发送到用户的浏览器,它将始终使用 https。 它是按域指定的,并且可以选择加上子域。

一旦浏览器访问您的域并收到 HSTS 标头,它将始终使用 https(强制执行)。 现在您无法通过服务器响应取消强制执行。

因此,最好在 Web 应用程序防火墙 (WAF) 级别添加 HSTS 和重定向标头,并且当您域上的所有资源都可以通过 https 提供服务时。

https://www.chromium.org/hsts/ https://blog.cloudflare.com/enforce-web-policy-with-hypertext-strict-transport-security-hsts/

【讨论】:

    猜你喜欢
    • 2014-08-25
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    相关资源
    最近更新 更多