目录搜索
GuidesAccess control CORSAuthenticationBrowser detection using the user agentCachingCaching FAQCompressionConditional requestsConnection management in HTTP 1.xContent negotiationContent negotiation: List of default Accept valuesCookiesCSPMessagesOverviewProtocol upgrade mechanismProxy servers and tunnelingProxy servers and tunneling: Proxy Auto-Configuration (PAC) filePublic Key PinningRange requestsRedirectionsResources and specificationsResources and URIsResponse codesServer-Side Access ControlSessionGuides: BasicsBasics of HTTPChoosing between www and non-www URLsData URIsEvolution of HTTPIdentifying resources on the WebMIME TypesMIME types: Complete list of MIME typesCSPContent-Security-PolicyContent-Security-Policy-Report-OnlyCSP: base-uriCSP: block-all-mixed-contentCSP: child-srcCSP: connect-srcCSP: default-srcCSP: font-srcCSP: form-actionCSP: frame-ancestorsCSP: frame-srcCSP: img-srcCSP: manifest-srcCSP: media-srcCSP: object-srcCSP: plugin-typesCSP: referrerCSP: report-uriCSP: require-sri-forCSP: sandboxCSP: script-srcCSP: style-srcCSP: upgrade-insecure-requestsCSP: worker-srcHeadersAcceptAccept-CharsetAccept-EncodingAccept-LanguageAccept-RangesAccess-Control-Allow-CredentialsAccess-Control-Allow-HeadersAccess-Control-Allow-MethodsAccess-Control-Allow-OriginAccess-Control-Expose-HeadersAccess-Control-Max-AgeAccess-Control-Request-HeadersAccess-Control-Request-MethodAgeAllowAuthorizationCache-ControlConnectionContent-DispositionContent-EncodingContent-LanguageContent-LengthContent-LocationContent-RangeContent-TypeCookieCookie2DateDNTETagExpectExpiresForwardedFromHeadersHostIf-MatchIf-Modified-SinceIf-None-MatchIf-RangeIf-Unmodified-SinceKeep-AliveLarge-AllocationLast-ModifiedLocationOriginPragmaProxy-AuthenticateProxy-AuthorizationPublic-Key-PinsPublic-Key-Pins-Report-OnlyRangeRefererReferrer-PolicyRetry-AfterServerSet-CookieSet-Cookie2SourceMapStrict-Transport-SecurityTETkTrailerTransfer-EncodingUpgrade-Insecure-RequestsUser-AgentUser-Agent: FirefoxVaryViaWarningWWW-AuthenticateX-Content-Type-OptionsX-DNS-Prefetch-ControlX-Forwarded-ForX-Forwarded-HostX-Forwarded-ProtoX-Frame-OptionsX-XSS-ProtectionMethodsCONNECTDELETEGETHEADMethodsOPTIONSPATCHPOSTPUTStatus100 Continue101 Switching Protocols200 OK201 Created202 Accepted203 Non-Authoritative Information204 No Content205 Reset Content206 Partial Content300 Multiple Choices301 Moved Permanently302 Found303 See Other304 Not Modified307 Temporary Redirect308 Permanent Redirect400 Bad Request401 Unauthorized403 Forbidden404 Not Found405 Method Not Allowed406 Not Acceptable407 Proxy Authentication Required408 Request Timeout409 Conflict410 Gone411 Length Required412 Precondition Failed413 Payload Too Large414 URI Too Long415 Unsupported Media Type416 Range Not Satisfiable417 Expectation Failed426 Upgrade Required428 Precondition Required429 Too Many Requests431 Request Header Fields Too Large451 Unavailable For Legal Reasons500 Internal Server Error501 Not Implemented502 Bad Gateway503 Service Unavailable504 Gateway Timeout505 HTTP Version Not Supported511 Network Authentication RequiredStatus
文字

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

上一篇:下一篇: