directory search
Guides Access control CORS Authentication Browser detection using the user agent Caching Caching FAQ Compression Conditional requests Connection management in HTTP 1.x Content negotiation Content negotiation: List of default Accept values Cookies CSP Messages Overview Protocol upgrade mechanism Proxy servers and tunneling Proxy servers and tunneling: Proxy Auto-Configuration (PAC) file Public Key Pinning Range requests Redirections Resources and specifications Resources and URIs Response codes Server-Side Access Control Session Guides: Basics Basics of HTTP Choosing between www and non-www URLs Data URIs Evolution of HTTP Identifying resources on the Web MIME Types MIME types: Complete list of MIME types CSP Content-Security-Policy Content-Security-Policy-Report-Only CSP: base-uri CSP: block-all-mixed-content CSP: child-src CSP: connect-src CSP: default-src CSP: font-src CSP: form-action CSP: frame-ancestors CSP: frame-src CSP: img-src CSP: manifest-src CSP: media-src CSP: object-src CSP: plugin-types CSP: referrer CSP: report-uri CSP: require-sri-for CSP: sandbox CSP: script-src CSP: style-src CSP: upgrade-insecure-requests CSP: worker-src Headers Accept Accept-Charset Accept-Encoding Accept-Language Accept-Ranges Access-Control-Allow-Credentials Access-Control-Allow-Headers Access-Control-Allow-Methods Access-Control-Allow-Origin Access-Control-Expose-Headers Access-Control-Max-Age Access-Control-Request-Headers Access-Control-Request-Method Age Allow Authorization Cache-Control Connection Content-Disposition Content-Encoding Content-Language Content-Length Content-Location Content-Range Content-Type Cookie Cookie2 Date DNT ETag Expect Expires Forwarded From Headers Host If-Match If-Modified-Since If-None-Match If-Range If-Unmodified-Since Keep-Alive Large-Allocation Last-Modified Location Origin Pragma Proxy-Authenticate Proxy-Authorization Public-Key-Pins Public-Key-Pins-Report-Only Range Referer Referrer-Policy Retry-After Server Set-Cookie Set-Cookie2 SourceMap Strict-Transport-Security TE Tk Trailer Transfer-Encoding Upgrade-Insecure-Requests User-Agent User-Agent: Firefox Vary Via Warning WWW-Authenticate X-Content-Type-Options X-DNS-Prefetch-Control X-Forwarded-For X-Forwarded-Host X-Forwarded-Proto X-Frame-Options X-XSS-Protection Methods CONNECT DELETE GET HEAD Methods OPTIONS PATCH POST PUT Status 100 Continue 101 Switching Protocols 200 OK 201 Created 202 Accepted 203 Non-Authoritative Information 204 No Content 205 Reset Content 206 Partial Content 300 Multiple Choices 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 307 Temporary Redirect 308 Permanent Redirect 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Timeout 409 Conflict 410 Gone 411 Length Required 412 Precondition Failed 413 Payload Too Large 414 URI Too Long 415 Unsupported Media Type 416 Range Not Satisfiable 417 Expectation Failed 426 Upgrade Required 428 Precondition Required 429 Too Many Requests 431 Request Header Fields Too Large 451 Unavailable For Legal Reasons 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout 505 HTTP Version Not Supported 511 Network Authentication Required Status
characters

Strict-Transport-Security响应报头(通常缩写为 HSTS)是一种安全功能,可以让一个网站告诉大家,它应该只使用 HTTPS,而不是使用 HTTP 进行通信的浏览器。

Header type

Response header

Forbidden header name

no

句法

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

指令

max-age=<expire-time>以秒为单位,浏览器应该记住,该站点只能通过 HTTPS 访问。includeSubDomains可选如果指定了此可选参数,则此规则也适用于所有网站的子域。preload可选参见预装严格的运输安全细节。不是规范的一部分。

描述

如果网站通过 HTTP 接受连接并重定向到 HTTPS,则在此情况下,用户最初可能会在重定向之前与网站的非加密版本进行通话,例如,如果用户键入 http://www.foo .com / 甚至只是 foo.com。

这就为中间人攻击提供了可能性,在这种攻击中,可以利用重定向将用户引导至恶意站点,而不是原始页面的安全版本。

HTTP Strict Transport Security 头允许网站通知浏览器它不应该使用HTTP加载站点,而应该自动将所有尝试使用 HTTP 访问站点的尝试转换为 HTTPS 请求。

注:Strict-Transport-Security忽略浏览器时,您的站点使用HTTP访问; 这是因为攻击者可能会拦截 HTTP 连接并注入头部或将其删除。当通过 HTTPS 访问您的站点而不出现证书错误时,浏览器知道您的站点具有 HTTPS 功能,并会兑现Strict-Transport-Security标题。

一个示例场景

您登录机场的免费 WiFi 接入点并开始浏览网页,访问您的网上银行服务以检查您的余额并支付几笔账单。不幸的是,您使用的接入点实际上是黑客的笔记本电脑,它们拦截您的原始 HTTP 请求,并将您重定向到银行网站的克隆而不是真实的东西。现在你的私人数据暴露给黑客。

严格的交通安全解决了这个问题。只要您使用 HTTPS 访问过您的银行网站,并且该银行的网站使用严格的传输安全性,您的浏览器就会知道只会自动使用 HTTPS,这可以防止黑客执行这种“中间人”攻击。

浏览器如何处理它

您的网站首次使用 HTTPS 访问并返回Strict-Transport-Security标题时,浏览器会记录此信息,以便将来尝试使用 HTTP 加载网站时会自动使用 HTTPS。

当 Strict-Transport-Security 标头指定的到期时间过去时,下一次通过 HTTP 加载站点的尝试将照常进行,而不是自动使用 HTTPS。

无论何时将 Strict-Transport-Security 头传递给浏览器,它都会更新该站点的到期时间,以便站点可以刷新此信息并防止超时过期。如果需要禁用严格传输安全性,则将 max-age 设置为0(通过 https 连接)将立即使Strict-Transport-Security标题失效,从而允许通过 http 访问。

预加载严格的运输安全

Google 维护一个 HSTS 预加载服务。按照指南并成功提交您的域名,浏览器将永远不会使用不安全的连接连接到您的域名。虽然该服务由 Google 托管,但所有浏览器都表示有意使用(或实际开始使用)预加载列表。

  • 有关 Chrome 中的 HSTS 预加载列表的信息:https://www.chromium.org/hsts

  • Firefox HSTS 预载列表的咨询:nsSTSPreloadList.inc

例子

所有现在和将来的子域名都是 HTTPS,最大年龄为1年。这会阻止访问只能通过 HTTP 提供服务的页面或子域。

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

产品规格

Specification

Status

Comment

HTTP Strict Transport Security (HSTS)

IETF RFC

Initial definition

浏览器兼容性

Feature

Chrome

Firefox

Edge

Internet Explorer

Opera

Safari

Basic Support

4.0

4

12

11

12

7

Feature

Android

Chrome for Android

Edge mobile

Firefox for Android

IE mobile

Opera Android

iOS Safari

Basic Support

4.4

18

(Yes)

(Yes)

?

?

8.4

Previous article: Next article: