aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/http/headers/strict-transport-security/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/zh-cn/web/http/headers/strict-transport-security/index.html')
-rw-r--r--files/zh-cn/web/http/headers/strict-transport-security/index.html121
1 files changed, 121 insertions, 0 deletions
diff --git a/files/zh-cn/web/http/headers/strict-transport-security/index.html b/files/zh-cn/web/http/headers/strict-transport-security/index.html
new file mode 100644
index 0000000000..d890b429ef
--- /dev/null
+++ b/files/zh-cn/web/http/headers/strict-transport-security/index.html
@@ -0,0 +1,121 @@
+---
+title: HTTP Strict Transport Security
+slug: Web/HTTP/HTTP_Strict_Transport_Security
+tags:
+ - HSTS
+ - HTTP
+ - HTTPS
+ - Security
+ - header
+translation_of: Web/HTTP/Headers/Strict-Transport-Security
+---
+<div><code><strong> HTTP Strict Transport Security</strong></code>(通常简称为{{Glossary("HSTS")}})是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源,而不是<a href="/en/HTTP" title="en/HTTP">HTTP</a>。</div>
+
+<table class="properties">
+ <tbody>
+ <tr>
+ <th scope="row">Header type</th>
+ <td>{{Glossary("Response header")}}</td>
+ </tr>
+ <tr>
+ <th scope="row">{{Glossary("Forbidden header name")}}</th>
+ <td>no</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="语法">语法</h2>
+
+<pre class="syntaxbox notranslate">Strict-Transport-Security: max-age=&lt;expire-time&gt;
+Strict-Transport-Security: max-age=&lt;expire-time&gt;; includeSubDomains
+Strict-Transport-Security: max-age=&lt;expire-time&gt;; preload
+</pre>
+
+<h2 id="指令">指令</h2>
+
+<dl>
+ <dt><code>max-age=&lt;expire-time&gt;</code></dt>
+ <dd>设置在浏览器收到这个请求后的&lt;expire-time&gt;秒的时间内凡是访问这个域名下的请求都使用HTTPS请求。</dd>
+ <dt><code>includeSubDomains</code> {{optional_inline}}</dt>
+ <dd>如果这个可选的参数被指定,那么说明此规则也适用于该网站的所有子域名。</dd>
+ <dt><code>preload</code> {{optional_inline}}</dt>
+ <dd>查看 {{anch("预加载 HSTS")}} 获得详情。不是标准的一部分。</dd>
+</dl>
+
+<h2 id="描述">描述</h2>
+
+<p>一个网站接受一个HTTP的请求,然后跳转到HTTPS,用户可能在开始跳转前,通过没有加密的方式和服务器对话,比如,用户输入http://foo.com或者直接foo.com。</p>
+
+<p>这样存在中间人攻击潜在威胁,跳转过程可能被恶意网站利用来直接接触用户信息,而不是原来的加密信息。</p>
+
+<p>网站通过HTTP Strict Transport Security通知浏览器,这个网站禁止使用HTTP方式加载,浏览器应该自动把所有尝试使用HTTP的请求自动替换为HTTPS请求。</p>
+
+<div class="note">
+<p><strong>注意:</strong> <code>Strict-Transport-Security</code> 在通过 HTTP 访问时会被浏览器<strong>忽略;</strong> 因为攻击者可以通过中间人攻击的方式在连接中修改、注入或删除它.  只有在你的网站通过HTTPS访问并且没有证书错误时, 浏览器才认为你的网站支持HTTPS 然后使用 <code>Strict-Transport-Security</code> 的值 .</p>
+</div>
+
+<h3 id="浏览器如何处理">浏览器如何处理</h3>
+
+<p>你的网站第一次通过HTTPS请求,服务器响应<code>Strict-Transport-Security</code> 头,浏览器记录下这些信息,然后后面尝试访问这个网站的请求都会自动把HTTP替换为HTTPS。</p>
+
+<p>当HSTS头设置的过期时间到了,后面通过HTTP的访问恢复到正常模式,不会再自动跳转到HTTPS。</p>
+
+<p>每次浏览器接收到Strict-Transport-Security头,它都会更新这个网站的过期时间,所以网站可以刷新这些信息,防止过期发生。</p>
+
+<p>Chrome、Firefox等浏览器里,当您尝试访问该域名下的内容时,会产生一个307 Internal Redirect(内部跳转),自动跳转到HTTPS请求。</p>
+
+<h3 id="示例场景">示例场景</h3>
+
+<p>你连接到一个免费WiFi接入点,然后开始浏览网站,访问你的网上银行,查看你的支出,并且支付一些订单。很不幸,你接入的WiFi实际上是黑客的笔记本热点,他们拦截了你最初的HTTP请求,然后跳转到一个你银行网站一模一样的钓鱼网站。 现在,你的隐私数据暴露给黑客了。</p>
+
+<p>Strict Transport Security解决了这个问题;只要你通过HTTPS请求访问银行网站,并且银行网站配置好<span style="line-height: 1.5;">Strict Transport Security,你的浏览器知道自动使用HTTPS请求,这可以阻止黑客的中间人攻击的把戏。</span></p>
+
+<h2 id="预加载_HSTS">预加载 HSTS</h2>
+
+<p>谷歌维护着一个 <a href="https://hstspreload.appspot.com/">HSTS 预加载服务</a>。按照如下指示成功提交你的域名后,浏览器将会永不使用非安全的方式连接到你的域名。虽然该服务是由谷歌提供的,但所有浏览器都有使用这份列表的意向(或者已经在用了)。但是,这不是 HSTS 标准的一部分,也不该被当作正式的内容。</p>
+
+<ul>
+ <li>Chrome &amp; Chromium 的 HSTS 预加载列表: <a href="https://www.chromium.org/hsts">https://www.chromium.org/hsts</a></li>
+ <li>Firefox 的 HSTS 预加载列表:<a href="https://hg.mozilla.org/mozilla-central/raw-file/tip/security/manager/ssl/nsSTSPreloadList.inc">nsSTSPreloadList.inc</a></li>
+</ul>
+
+<h2 id="示例">示例</h2>
+
+<p>现在和未来的所有子域名会自动使用 HTTPS 连接长达一年。同时阻止了只能通过 HTTP 访问的内容。</p>
+
+<pre class="notranslate"><code>Strict-Transport-Security: max-age=31536000; includeSubDomains</code>
+</pre>
+
+<h2 id="规范">规范</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">规范</th>
+ <th scope="col">状态</th>
+ <th scope="col">注释</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('HSTS')}}</td>
+ <td>{{Spec2('HSTS')}}</td>
+ <td>Initial definition</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容">浏览器兼容</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("http.headers.Strict-Transport-Security")}}</p>
+
+<h2 id="查看更多">查看更多</h2>
+
+<ul>
+ <li>Blog post: <a href="http://blog.sidstamm.com/2010/08/http-strict-transport-security-has.html">HTTP Strict Transport Security has landed!</a></li>
+ <li>Blog post: <a href="http://hacks.mozilla.org/2010/08/firefox-4-http-strict-transport-security-force-https/">HTTP Strict Transport Security (force HTTPS)</a></li>
+ <li>OWASP Article: <a href="https://www.owasp.org/index.php/HTTP_Strict_Transport_Security">HTTP Strict Transport Security</a></li>
+ <li>Wikipedia: <a href="http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security">HTTP Strict Transport Security</a></li>
+ <li>Google: <a href="http://www.zdnet.com/article/google-chrome-is-backing-away-from-public-key-pinning-and-heres-why/">Chrome is backing away from public key pinning, and here's why</a></li>
+ <li>Blog post: <a href="https://scotthelme.co.uk/a-new-security-header-expect-ct/">A new security header: Expect-CT</a></li>
+</ul>