aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/http/headers/content-security-policy/index.html
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/http/headers/content-security-policy/index.html
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/zh-cn/web/http/headers/content-security-policy/index.html')
-rw-r--r--files/zh-cn/web/http/headers/content-security-policy/index.html226
1 files changed, 226 insertions, 0 deletions
diff --git a/files/zh-cn/web/http/headers/content-security-policy/index.html b/files/zh-cn/web/http/headers/content-security-policy/index.html
new file mode 100644
index 0000000000..391086d5a6
--- /dev/null
+++ b/files/zh-cn/web/http/headers/content-security-policy/index.html
@@ -0,0 +1,226 @@
+---
+title: Content-Security-Policy
+slug: Web/HTTP/Headers/Content-Security-Policy
+translation_of: Web/HTTP/Headers/Content-Security-Policy
+---
+<div>{{HTTPSidebar}}</div>
+
+<div>HTTP 响应头<strong><code>Content-Security-Policy</code></strong>允许站点管理者控制用户代理能够为指定的页面加载哪些资源。除了少数例外情况,设置的政策主要涉及指定服务器的源和脚本结束点。这将帮助防止跨站脚本攻击(<code>Cross-Site Script</code>)({{Glossary("XSS")}})。</div>
+
+<p>如需更多信息,请查阅<a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy (CSP)</a>。</p>
+
+<table class="properties">
+ <tbody>
+ <tr>
+ <th scope="row">头部类型</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">Content-Security-Policy: &lt;policy-directive&gt;; &lt;policy-directive&gt;
+</pre>
+
+<h2 id="指令">指令</h2>
+
+<h3 id="获取指令:GlossaryFetch_directive_Fetch_directives">获取指令:{{Glossary("Fetch directive", "Fetch directives")}}</h3>
+
+<p>通过获取指令来控制某些可能被加载的确切的资源类型的位置。</p>
+
+<dl>
+ <dt>{{CSP("child-src")}}</dt>
+ <dd><strong>child-src:</strong>为 <a href="/zh-CN/docs/Web/API/Web_Workers_API">web workers</a> 和其他内嵌浏览器内容(例如用{{HTMLElement("frame")}}和{{HTMLElement("iframe")}}加载到页面的内容)定义合法的源地址。</dd>
+ <dt>
+ <div class="warning">
+ <p>如果开发者希望管控内嵌浏览器内容和 web worker 应分别使用{{CSP("frame-src")}}和{{CSP("worker-src")}} 指令,来相对的取代 <code><strong>child-src</strong></code>。</p>
+ </div>
+ </dt>
+ <dt></dt>
+ <dt>{{CSP("connect-src")}}</dt>
+ <dd><strong>connect-src:</strong>限制能通过脚本接口加载的URL。</dd>
+ <dt>{{CSP("default-src")}}</dt>
+ <dd><strong>default-src:</strong>为其他取指令提供备用服务{{Glossary("Fetch directive", "fetch directives")}}。</dd>
+ <dt>{{CSP("font-src")}}</dt>
+ <dd><strong>font-src:</strong>设置允许通过{{cssxref("@font-face")}}加载的字体源地址。</dd>
+ <dt>{{CSP("frame-src")}}</dt>
+ <dd><strong>frame-src: </strong>设置允许通过类似{{HTMLElement("frame")}}和{{HTMLElement("iframe")}}标签加载的内嵌内容的源地址。</dd>
+ <dt>{{CSP("img-src")}}</dt>
+ <dd><strong>img-src: </strong>限制图片和图标的源地址</dd>
+ <dt>{{CSP("manifest-src")}}</dt>
+ <dd><strong>manifest-src : </strong>限制应用声明文件的源地址。</dd>
+ <dt>{{CSP("media-src")}}</dt>
+ <dd><strong>media-src:</strong>限制通过{{HTMLElement("audio")}}、{{HTMLElement("video")}}或{{HTMLElement("track")}}标签加载的媒体文件的源地址。</dd>
+ <dt>{{CSP("object-src")}}</dt>
+ <dd><strong>object-src:</strong>限制{{HTMLElement("object")}}、{{HTMLElement("embed")}}、{{HTMLElement("applet")}}标签的源地址。</dd>
+</dl>
+
+<div class="blockIndicator note">
+<p>被<code>object-src</code>控制的元素可能碰巧被当作遗留HTML元素,导致不支持新标准中的功能(例如<code>&lt;iframe&gt;</code>中的安全属性<code>sandbox</code>和<code>allow</code>)。因此<strong>建议</strong>限制该指令的使用(比如,如果可行,将<code>object-src</code>显式设置为<code>'none'</code>)。</p>
+</div>
+
+<dl>
+ <dt>{{CSP("prefetch-src")}} </dt>
+ <dd>指定预加载或预渲染的允许源地址。</dd>
+ <dt>{{CSP("script-src")}}</dt>
+ <dd>限制JavaScript的源地址。</dd>
+ <dt>{{CSP("style-src")}}</dt>
+ <dd>限制层叠样式表文件源。</dd>
+ <dt>{{CSP("webrtc-src")}} {{experimental_inline}}</dt>
+ <dd>指定<a href="https://developer.mozilla.org/docs/Web/API/WebRTC_API">WebRTC</a>连接的合法源地址。</dd>
+ <dt>{{CSP("worker-src")}}</dt>
+ <dd>限制{{domxref("Worker")}}、{{domxref("SharedWorker")}}或者{{domxref("ServiceWorker")}}脚本源。</dd>
+</dl>
+
+<h3 id="文档指令_Document_directives">文档指令 | Document directives</h3>
+
+<p>文档指令管理文档属性或者worker环境应用的策略。</p>
+
+<dl>
+ <dt>{{CSP("base-uri")}}</dt>
+ <dd>限制在DOM中{{HTMLElement("base")}}元素可以使用的URL。</dd>
+ <dt>{{CSP("plugin-types")}}</dt>
+ <dd>通过限制可以加载的资源类型来限制哪些插件可以被嵌入到文档中。</dd>
+ <dt>{{CSP("sandbox")}}</dt>
+ <dd>类似{{HTMLElement("iframe")}} {{htmlattrxref("sandbox", "iframe")}}属性,为请求的资源启用沙盒。</dd>
+ <dt>{{CSP("disown-opener")}} {{obsolete_inline}}</dt>
+ <dd>确保资源在导航的时候能够脱离父页面。(windown.opener 对象)Ensures a resource will disown its opener when navigated to.</dd>
+</dl>
+
+<h3 id="导航指令_Navigation_directives">导航指令 | Navigation directives</h3>
+
+<p>导航指令管理用户能打开的链接或者表单可提交的链接</p>
+
+<dl>
+ <dt>{{CSP("form-action")}}</dt>
+ <dd>限制能被用来作为给定上下文的表单提交的目标 URL(说白了,就是限制 form 的 action 属性的链接地址)</dd>
+ <dt>{{CSP("frame-ancestors")}}</dt>
+ <dd>指定可能嵌入页面的有效父项{{HTMLElement("frame")}}, {{HTMLElement("iframe")}}, {{HTMLElement("object")}}, {{HTMLElement("embed")}}, or {{HTMLElement("applet")}}.</dd>
+ <dt>{{CSP("navigation-to")}} {{experimental_inline}}</dt>
+ <dd>限制文档可以通过以下任何方式访问URL (a, form, window.location, window.open, etc.)</dd>
+</dl>
+
+<h3 id="报告指令">报告指令</h3>
+
+<p>报告指令控制 CSP 违规的报告过程. 更多请看 {{HTTPHeader("Content-Security-Policy-Report-Only")}} 报头.</p>
+
+<dl>
+ <dt>{{CSP("report-uri")}} {{deprecated_inline}}</dt>
+ <dd>当出现可能违反CSP的操作时,让客户端提交报告。这些违规报告会以JSON文件的格式通过POST请求发送到指定的URI</dd>
+ <dt>{{CSP("report-to")}} {{experimental_inline}}</dt>
+ <dd>Fires a <code>SecurityPolicyViolationEvent</code>.</dd>
+</dl>
+
+<h3 id="其他指令_Other_directives">其他指令 | Other directives</h3>
+
+<dl>
+ <dt>{{CSP("block-all-mixed-content")}}</dt>
+ <dd>当使用HTTPS加载页面时阻止使用HTTP加载任何资源。</dd>
+ <dt>{{CSP("referrer")}} {{obsolete_inline}}</dt>
+ <dd>用来指定会离开当前页面的跳转链接的 referer header 信息。应该使用 {{HTTPHeader("Referrer-Policy")}} 替代。</dd>
+ <dt>{{CSP("require-sri-for")}}</dt>
+ <dd>需要使用 {{Glossary("SRI")}} 作用于页面上的脚本或样式。</dd>
+ <dt>{{CSP("upgrade-insecure-requests")}}</dt>
+ <dd>让浏览器把一个网站所有的不安全 URL(通过 HTTP 访问)当做已经被安全的 URL 链接(通过 HTTPS 访问)替代。这个指令是为了哪些有量大不安全的传统 URL 需要被重写时候准备的。</dd>
+</dl>
+
+<h2 id="CSP_和_Workers">CSP 和 Workers</h2>
+
+<p><a href="/en-US/docs/Web/API/Worker">Workers</a> 一般来说不被创建他的文档(或者父级Worker)的CSP策略管理。如果要为Worker指定CSP策略,可以为Worker脚本的请求的响应的头部设置CSP策略。 </p>
+
+<p>例外的情况是,如果Worker脚本的来源是一个全局唯一ID(比如,它的URL是一个结构化的数据或者BLOB)。在这种情况下,这个Worker会继承它所属的文档或者创建它的Worker的CSP策略。</p>
+
+<h2 id="多内容安全策略">多内容安全策略</h2>
+
+<p>CSP 允许在一个资源中指定多个策略, 包括通过 <code>Content-Security-Policy</code> 头, 以及 {{HTTPHeader("Content-Security-Policy-Report-Only")}} 头,和 {{HTMLElement("meta")}} 组件。</p>
+
+<p>你可以像以下实例一样多次调用 <code>Content-Security-Policy</code> 头。 特别注意这里的 {{CSP("connect-src")}} 指令。 尽管第二个策略允许连接, 第一个策略仍然包括了 <code>connect-src 'none'</code>。添加了附加的策略后,只会让资源保护的能力更强,也就是说不会有接口可以被允许访问,等同于最严格的策略,<code>connect-src 'none'</code> 强制开启。</p>
+
+<pre>Content-Security-Policy: default-src 'self' http://example.com;
+ connect-src 'none';
+Content-Security-Policy: connect-src http://example.com/;
+ script-src http://example.com/</pre>
+
+<h2 id="示例">示例</h2>
+
+<p>示例: 禁用不安全的内联/动态执行, 只允许通过 https加载这些资源 (images, fonts, scripts, etc.)</p>
+
+<pre>// header
+Content-Security-Policy: default-src https:
+
+// meta tag
+&lt;meta http-equiv="Content-Security-Policy" content="default-src https:"&gt;
+</pre>
+
+<p>示例: 已经存在的一个网站,用了太多内联代码修复问题,而且想确保资源只从 https 加载,并且禁止插件:</p>
+
+<pre>Content-Security-Policy: default-src https: 'unsafe-eval' 'unsafe-inline'; object-src 'none'</pre>
+
+<p>实例:还没有开始实施上面的策略;相反,只是开始上报可能会发生违反安全策略的行为:</p>
+
+<pre>Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-violation-report-endpoint/</pre>
+
+<p>查看 <a href="https://wiki.mozilla.org/Security/Guidelines/Web_Security#Examples_5">Mozilla Web Security Guidelines</a> 上的更多例子.</p>
+
+<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("CSP 3.0")}}</td>
+ <td>{{Spec2('CSP 3.0')}}</td>
+ <td>Adds <code>disown-opener</code>, <code>manifest-src</code>, <code>navigation-to</code>, <code>report-uri</code>, <code>strict-dynamic</code>, <code>worker-src</code>. Undeprecates <code>frame-src</code>. Deprecates report-uri in favor if <code>report-to</code>.</td>
+ </tr>
+ <tr>
+ <td>{{specName("Mixed Content")}}</td>
+ <td>{{Spec2('Mixed Content')}}</td>
+ <td>Adds <code>block-all-mixed-content</code>.</td>
+ </tr>
+ <tr>
+ <td>{{specName("Subresource Integrity")}}</td>
+ <td>{{Spec2('Subresource Integrity')}}</td>
+ <td>Adds <code>require-sri-for</code>.</td>
+ </tr>
+ <tr>
+ <td>{{specName("Upgrade Insecure Requests")}}</td>
+ <td>{{Spec2('Upgrade Insecure Requests')}}</td>
+ <td>Adds <code>upgrade-insecure-requests</code>.</td>
+ </tr>
+ <tr>
+ <td>{{specName("CSP 1.1")}}</td>
+ <td>{{Spec2('CSP 1.1')}}</td>
+ <td>Adds <code>base-uri</code>, <code>child-src</code>, <code>form-action</code>, <code>frame-ancestors</code>, <code>plugin-types</code>, <code>referrer</code>, <code>reflected-xss</code>, and <code>report-uri</code>. Deprecates <code>frame-src</code>.</td>
+ </tr>
+ <tr>
+ <td>{{specName("CSP 1.0")}}</td>
+ <td>{{Spec2('CSP 1.0')}}</td>
+ <td>Defines <code>connect-src</code>, <code>default-src</code>, <code>font-src</code>, <code>frame-src</code>, <code>img-src</code>, <code>media-src</code>, <code>object-src</code>, report-uri, <code>sandbox</code>, <code>script-src,</code> and <code>style-src</code>.</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/content-security-policy", "Content-Security-Policy")}}</p>
+
+<h2 id="参见">参见</h2>
+
+<ul>
+ <li>{{HTTPHeader("Content-Security-Policy-Report-Only")}}</li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security in WebExtensions</a></li>
+ <li>
+ <p><a href="/en-US/docs/Tools/GCLI/Display_security_and_privacy_policies">Display security and privacy policies In Firefox Developer Tools</a></p>
+ </li>
+</ul>