Explore HTTP-Strict-Transport-Security conmigo

Los encabezados de respuesta HTTP Strict-Transport-Security(a menudo abreviados HSTS) se utilizan para informar al navegador que solo se debe acceder al sitio a través de HTTPS, y que todos los intentos futuros de acceder al sitio mediante HTTP se deben redirigir automáticamente a HTTPS.

Nota: Esto es más seguro que simplemente configurar una redirección HTTPa HTTPS, ya que la conexión HTTP inicial aún es vulnerable a los ataques de intermediarios.

gramática

Strict-Transport-Security: max-age=<expire-time>
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains; preload

instrucción

  • max-age=<expire-time>

    La cantidad máxima de tiempo, en segundos, que el navegador debe recordar para acceder al sitio usando solo HTTPS.

  • includeSubDomainsopcional

    Si se especifica este parámetro opcional, significa que esta regla también se aplica a todos los subdominios de este sitio web.

  • preloadopcional no estándar

    Consulte Precarga HSTSpara obtener más información. Cuando se usa preload, max-agela directiva debe tener al menos 31536000(un año de antigüedad) y includeSubDomainsla directiva . Esto no es parte del estándar.

describir

Si un sitio web acepta solicitudes HTTP y luego redirige a HTTPS, el usuario puede comunicarse con el servidor sin cifrar antes de iniciar la redirección, por ejemplo, el usuario ingresa http://foo.como ingresa a foo.com. Esto crea una oportunidad para ataques man-in-the-middle. Los redireccionamientos se pueden usar para dirigir a los usuarios a un sitio malicioso en lugar de a una versión segura del sitio original.

El sitio web informa al navegador a través del encabezado HTTP Strict Transport Security que está prohibido cargar este sitio web usando HTTP, y el navegador debe reemplazar automáticamente todas las solicitudes que intentan usar HTTP con solicitudes HTTPS.

备注: Strict-Transport-Security 标头在通过 HTTP 访问时会被浏览器忽略。只有在你的网站通过 HTTPS 访问并且没有证书错误时,浏览器才认为你的网站支持 HTTPS,然后遵守 Strict-Transport-Security 标头。浏览器这样做是因为攻击者可以拦截到站点的 HTTP 连接,然后注入或者删除标头。

示例场景

你登录到一个免费 Wi-Fi 热点,然后开始浏览网站,访问你的网上银行,查看你的支出,并且支付一些订单。很不幸,你接入的 Wi-Fi 实际上是黑客的笔记本热点,他们拦截了你原始的 HTTP 请求,然后重定向到一个与你银行网站一模一样的钓鱼网站。现在,你的隐私数据暴露给黑客了。

Strict Transport Security 解决了这个问题;只要你通过 HTTPS 请求访问银行网站,并且银行网站配置好 Strict Transport Security,你的浏览器知道自动使用 HTTPS 请求,这可以阻止黑客的中间人攻击的把戏。

浏览器如何处理

你的网站第一次通过 HTTPS 请求,服务器响应 Strict-Transport-Security 标头,浏览器记录下这些信息,然后后面尝试访问这个网站的请求都会自动把 HTTP 替换为 HTTPS。

Strict-Transport-Security 标头设置的过期时间到了,后面通过 HTTP 的访问恢复到正常模式,不会再自动重定向到 HTTPS。

每次浏览器接收到 Strict-Transport-Security 标头,它都会更新这个网站的过期时间,所以网站可以刷新这些信息,防止过期发生。如果有禁用 Strict-Transport-Security 的需求,将 max-age 设置为 0(通过 https 连接)将立即使 Strict-Transport-Security 标头失效,从而可以通过 http 访问。

预加载 HSTS

谷歌维护着一个 HSTS 预加载服务。按照如下指示成功提交你的域名后,浏览器将会永不使用非安全的方式连接到你的域名。虽然该服务是由谷歌提供的,但所有浏览器都在使用这个预加载列表。但是,这不是 HSTS 标准的一部分,也不该被当作正式的内容。

示例

现在和未来的所有子域名会自动使用 HTTPS,有效期(max-age)为一年。同时阻止了只能通过 HTTP 访问页面或者子域的内容。

Strict-Transport-Security: max-age=31536000; includeSubDomains

Copy to Clipboard

虽然将域的有效期(max-age)设置为 1 年是可以的,但 hstspreload.org 推荐将其设置为 2 年。

在以下示例中,有效期(max-age)被设置为 2 年,并带有 preload 后缀,该后缀是网站被收录到所有主流的 web 浏览器(如 Chromium、Edge 以及 Firefox)的 HSTS 预加载列表所必须的。

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

Supongo que te gusta

Origin juejin.im/post/7235091963313897533
Recomendado
Clasificación