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

内容安全策略(CSP)是一个附加的安全层,有助于检测和缓解某些类型的攻击,包括跨站点脚本(XSS)和数据注入攻击。这些攻击用于从数据窃取到网站污损或恶意软件分发的所有事情。

CSP被设计为完全向后兼容(除CSP版本2,其中有在向后兼容性一些明确提到的不一致性;更多的细节在这里第1.1节)。不支持它的浏览器仍然支持实现它的服务器,反之亦然:不支持CSP的浏览器完全忽略它,像往常一样运行,默认为Web内容的标准同源策略。如果站点不提供CSP头,浏览器同样使用标准的同源策略。

要启用CSP,您需要配置您的Web服务器以返回Content-Security-PolicyHTTP标头(有时您会看到X-Content-Security-Policy标题的提及,但这是旧版本,不需要再指定)。

或者,该元素可用于配置策略,例如:

潜在注意点

缓解跨站点脚本

CSP的主要目标是减轻和报告XSS攻击。XSS攻击利用浏览器对从服务器接收的内容的信任。恶意脚本由受害者的浏览器执行,因为浏览器信任内容的来源,即使它不是来自它应该来自的地方。

CSP使服务器管理员可以通过指定浏览器应该认为是可执行脚本的有效来源的域来减少或消除XSS可能发生的向量。然后,兼容CSP的浏览器将仅执行从从这些列入白名单的域接收的源文件中加载的脚本,而忽略所有其他脚本(包括内联脚本和事件处理HTML属性)。

作为最终的保护形式,希望永远不允许脚本执行的站点可以选择全局禁止脚本执行。

缓解数据包-嗅探攻击

除了限制可以加载内容的域外,服务器还可以指定允许使用哪些协议; 例如(理想情况下,从安全角度来看),服务器可以指定必须使用HTTPS加载所有内容。完整的数据传输安全策略不仅包括对数据传输实施HTTPS,还包括使用安全标记对所有Cookie进行标记,并提供从HTTP页面到其HTTPS对等方的自动重定向。网站也可能使用Strict-Transport-SecurityHTTP标头来确保浏览器仅通过加密通道连接到它们

使用CSP

配置内容安全策略包括将Content-Security-PolicyHTTP头添加到网页,并为其提供值以控制允许用户代理为该页加载的资源。例如,上传和显示图像的页面可能允许来自任何地方的图像,但将表单操作限制为特定的端点。正确设计的内容安全策略有助于保护页面免受跨站点脚本攻击。本文解释了如何正确构建这些头文件,并提供了示例。

指定您的策略

您可以使用Content-Security-PolicyHTTP标头指定您的策略,如下所示:

Content-Security-Policy: policy

该策略是一个包含描述您的内容安全策略的策略指令的字符串。

写一个策略

使用一系列策略指令来描述策略,每个策略指令都描述特定资源类型或策略区域的策略。你的策略应该包含一个default-src策略指令,当它们没有自己的策略时,它就是其他资源类型的回退(完整列表请参阅default-src指令的描述)。策略需要包含一个default-srcscript-src指令以防止内联脚本运行,并阻止使用eval()。策略需要包含一个default-srcstyle-src指令,以限制从