保护第一个 HTTP 请求
Secure first HTTP request
我正在构建网站,想知道如果第一个请求是由 HTTP 发出的,我如何才能确保它是安全的。 HSTS 只是部分地做到了这一点。
我认为不打开 HTTP 端口可以解决这个问题。但这是标准吗?我的站点是 B to B,所以 SEO 不是问题。用户直接访问我的地址,但假设可以使用 HTTP。有什么想法吗?
我会建议将 http 更改为 https 的防火墙重定向规则。
简答:
- 使用 HSTS 预加载:https://hstspreload.appspot.com/
- 在 https 上,始终发送 HSTS header
- 在 http 上,始终将 301 重定向发送到 https
它将保护您的访问者即使是第一次访问感谢预加载:浏览器会知道您的域必须只与 https 联系,甚至在第一次联系之前(它将是在他们的源代码中,请参阅 https://github.com/ssllabs/research/wiki/Preload-Lists ).
(当然,请保持您的 301 重定向 http=>https)
为什么关闭端口 80 不是一个好主意?让我们看看这两个选项:
HSTS 和端口 80 关闭的选项:
- 首次访问 http://example.com:没有任何反应
http://example.com 的后续访问:没有任何反应
首次访问 https://example.com : 用户是安全的并且 HSTS 被保留
- 随后在 http://example.com 或 https://example.com 上的访问:用户是安全的(由于 HSTS,对 http 的访问被重定向)
万一受到攻击:
- 在 http://example.com 上首次访问:被黑(黑客可以伪造答案,即使您的服务器没有响应)
- http://example.com 上的后续访问:也被黑了(用户可能会被诱骗点击 http link 到您的网站)
- 首次访问 https://example.com:用户安全
- 随后在 http://example.com 或 https://example.com 上的访问:用户是安全的(由于 HSTS,对 http 的访问被重定向)
带有 HSTS 和端口 80 打开的选项:
- 首次访问** http://example.com : 301 重定向到 https(然后获取 HSTS)
http://example.com 上的后续访问:用户安全重定向到 https(感谢 HSTS)
首次访问 https://example.com : 用户是安全的并且 HSTS 被保留
- 随后在 http://example.com 或 https://example.com 上的访问:用户是安全的(由于 HSTS,对 http 的访问被重定向)
万一受到攻击:
- 首次访问 http://example.com :被黑
http://example.com 上的后续访问:用户安全重定向到 https(感谢 HSTS)
首次访问 https://example.com : 用户是安全的并且 HSTS 被保留
- 随后在 http://example.com 或 https://example.com 上的访问:用户是安全的(由于 HSTS,对 http 的访问被重定向)
如您所见,打开端口 80 以响应 301 重定向到 https 可以提高一点安全性(关闭它不会提高安全性,并且可能会使您的访问者感到困惑)
我正在构建网站,想知道如果第一个请求是由 HTTP 发出的,我如何才能确保它是安全的。 HSTS 只是部分地做到了这一点。
我认为不打开 HTTP 端口可以解决这个问题。但这是标准吗?我的站点是 B to B,所以 SEO 不是问题。用户直接访问我的地址,但假设可以使用 HTTP。有什么想法吗?
我会建议将 http 更改为 https 的防火墙重定向规则。
简答:
- 使用 HSTS 预加载:https://hstspreload.appspot.com/
- 在 https 上,始终发送 HSTS header
- 在 http 上,始终将 301 重定向发送到 https
它将保护您的访问者即使是第一次访问感谢预加载:浏览器会知道您的域必须只与 https 联系,甚至在第一次联系之前(它将是在他们的源代码中,请参阅 https://github.com/ssllabs/research/wiki/Preload-Lists ).
(当然,请保持您的 301 重定向 http=>https)
为什么关闭端口 80 不是一个好主意?让我们看看这两个选项:
HSTS 和端口 80 关闭的选项:
- 首次访问 http://example.com:没有任何反应
http://example.com 的后续访问:没有任何反应
首次访问 https://example.com : 用户是安全的并且 HSTS 被保留
- 随后在 http://example.com 或 https://example.com 上的访问:用户是安全的(由于 HSTS,对 http 的访问被重定向)
万一受到攻击:
- 在 http://example.com 上首次访问:被黑(黑客可以伪造答案,即使您的服务器没有响应)
- http://example.com 上的后续访问:也被黑了(用户可能会被诱骗点击 http link 到您的网站)
- 首次访问 https://example.com:用户安全
- 随后在 http://example.com 或 https://example.com 上的访问:用户是安全的(由于 HSTS,对 http 的访问被重定向)
带有 HSTS 和端口 80 打开的选项:
- 首次访问** http://example.com : 301 重定向到 https(然后获取 HSTS)
http://example.com 上的后续访问:用户安全重定向到 https(感谢 HSTS)
首次访问 https://example.com : 用户是安全的并且 HSTS 被保留
- 随后在 http://example.com 或 https://example.com 上的访问:用户是安全的(由于 HSTS,对 http 的访问被重定向)
万一受到攻击:
- 首次访问 http://example.com :被黑
http://example.com 上的后续访问:用户安全重定向到 https(感谢 HSTS)
首次访问 https://example.com : 用户是安全的并且 HSTS 被保留
- 随后在 http://example.com 或 https://example.com 上的访问:用户是安全的(由于 HSTS,对 http 的访问被重定向)
如您所见,打开端口 80 以响应 301 重定向到 https 可以提高一点安全性(关闭它不会提高安全性,并且可能会使您的访问者感到困惑)