摘要:本文简单介绍与安全相同的响应头部,内容整理自。参数参数说明指定的时间秒范围内浏览器总是使用来访问可选参数,是否同时应用于当前域名的所有子域名示例是一种防止网站被攻击者使用错误发布或其他欺诈性证书冒充安全证书的安全机制。
本文简单介绍与安全相同的 HTTP 响应头部,内容整理自《OWASP Secure Headers Project》。
HTTP Strict Transport SecurityHTTP Strict Transport Security(HSTS) 是一种网络安全策略机制,用于防范降级攻击(Downgrade Attack)和 Cookie 劫持(Cookie Hijacking)。它允许服务器告诉浏览器(或其他代理)只能使用 HTTPS 访问服务,禁止使用 HTTP。实现了 HSTS 策略的服务器通过 HTTPS 链接的 Strict-Transport-Security 头部告诉客户端其策略,HTTP 中的 HSTS 头部会被忽略。
参数:
参数 | 说明 |
---|---|
max-age=SECONDS | 指定的时间(秒)范围内浏览器总是使用 HTTPS 来访问 |
includeSubDomains | 可选参数,是否同时应用于当前域名的所有子域名 |
示例:
Strict-Transport-Security: max-age=31536000; includeSubDomainsPublic Key Pinning Extension for HTTP
HTTP Public Key Pinning (HPKP)是一种防止 HTTPS 网站被攻击者使用错误发布或其他欺诈性证书冒充安全证书的安全机制。例如,攻击者可能会欺骗证书颁发机构,然后为错误的为其颁发证书。
HTTPS 服务器会通过头部提供一个公钥哈希列表,在后续的请求中,客户端期望服务端在证书链中使用其中一个或多个公钥哈希。想要安全的部署 HPKP,要求具有成熟的部署和管理机制,否则主机可能会因为固定到一组无效的公钥哈希而使得服务不可用。一旦成功部署,能够大大减小中间人攻击和其他虚假认证问题。
参数:
参数 | 说明 |
---|---|
pin-sha256=" |
Base64 编码的公钥信息指纹,可以指定多个不同的公钥 |
max-age=SECONDS | 指定的时间(秒)范围内总是使用其中一个固定的 key |
includeSubDomains | 可选参数,是否同时应用于所有子域名 |
report-uri=" |
可选参数,pin 校验失败后的上报地址 |
示例:
Public-Key-Pins: pin-sha256="d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM="; pin-sha256="E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g="; report-uri="http://example.com/pkp-report"; max-age=10000; includeSubDomainsX-Frame-Options
X-Frame-Options 响应头部用于保护网络应用遭受点击劫持(Clickjacking)攻击。它用来控制网站是否显示其它域的 内容。
参数:
参数 | 说明 |
---|---|
deny | 不显示 内容 |
sameorigin | 只显示来自同域的 内容 |
allow-from: |
只显示指定域名的 内容 |
示例:
X-Frame-Options: denyX-XSS-Protection
X-XSS-Protection 用来开启浏览器自带的 XSS 防护。
参数:
参数 | 说明 |
---|---|
0 | 不开启 |
1 | 开启,当浏览器检测到 XSS 攻击时,会清除不安全的内容 |
1;mode=block | 开启,当浏览器检测到 XSS 攻击时,不会清除内容,而是会阻止页面加载 |
1;report= |
(Chrome Only)开启,当浏览器检测到 XSS 攻击时,将清除不安全内容并使用 CSP report-uri 指令发送违规报告 |
示例:
X-XSS-Protection: 1; mode=blockX-Content-Type-Options
设置该头部可以防止浏览器把响应解析为指定 Content-Type 以外的类型。例如,一个 HTML 文档的 Content-Type 为 text/plain,但是有些浏览器仍然会把文档当做 HTML 来解析。
参数:
参数 | 说明 |
---|---|
nosniff | 阻止浏览器自动推测类型 |
示例:
X-Content-Type-Options: nosniffContent-Security-Policy
Content-Security-Policy(CSP)可以用来定义详细的安全策略。它可以大范围地控制浏览器行为,例如默认不允许内嵌脚本,除非显式声明允许。
CSP 的设置较为复杂,由指令和参数组成,指令之间使用 ; 分割,参数之间使用空格分割。指令的值即为参数。
参数:
指令 | 说明 |
---|---|
base-uri | 定义相对 URI 的基础 URI |
default-src | 定义所有资源加载的默认策略,如果对应类型的资源加载策略没有定义,则会使用该策略 |
script-src | 定义可以执行的 Script 来源 |
object-src | 定义 、、 等可以加载的插件来源 |
style-src | 定义允许加载的样式来源 |
img-src | 定义允许加载的图片来源 |
media-src | 定义允许加载的视频和音频来源 |
frame-src | 定义允许嵌入的 来源(已弃用,请使用 child-src 代替) |
child-src | 定义允许嵌入的 来源 |
font-src | 定义允许加载的字体来源 |
connect-src | 定义允许访问的接口域名 |
manifest-src | 定义允许加载的资源清单来源 |
form-action | 定义允许在 中使用的 action 域名 |
sandbox | 定义 HTML 沙盒策略 |
script-nonce | 要求 script 必须带上随机串(SRI 相关) |
referrer | 定义客户端必须发送 Referer 头部信息 |
report-uri | 定义违规报告的发送地址 |
参数 | 说明 |
---|---|
"none" | 不允许任何内容 |
"self" | 允许同源内容 |
data: | 允许 data: 协议 |
www.example.com | 允许指定域名内容 |
.example.com | 允许子域名内容 |
https://example.com | 允许指定域名且协议匹配的内容 |
https: | 允许加载 HTTPS 资源 |
"unsafe-inline" | 允许行内资源,如行内 JS 和 CSS 、style 属性、onclick 属性等 |
"unsafe-eval" | 允许 js 动态代码,如 eval |
示例:
Content-Security-Policy: default-src *; script-src "self" "unsafe-inline" "unsafe-eval"; report-uri https://example.com/reportReferrer-Policy
Referfer-Policy 响应头部控制浏览器应该在 Referrer 请求头部中发送什么信息。
参数:
参数 | 说明 |
---|---|
no-referrer | 不发送 Referrer 头部 |
no-referrer-when-downgrade | 默认值,HTTPS 转 HTTP 时不发送 Referrer 头部 |
origin | 只发送文档源域名 |
origin-when-cross-origin | 同域时发送完整的 URL,跨域时只发送源域名 |
same-origin | 同域时才发送,跨域时不发送 |
strict-origin | 只有在 HTTPS 转 HTTPS 时才发送源域名,其他情况不发送 |
strict-origin-when-cross-origin | 同域时发送完整 URL,HTTPS 转 HTTPS 时发送源域名,HTTPS 转 HTTP 时不发送 |
unsafe-url | 发起同域或跨域请求时发送完整 URL(不含参数) |
示例:
Referrer-Policy: no-referrer
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/11406.html
摘要:常规写法速记法判断变量是否存在速记法这可能会有些琐碎,但是值得一提。常规写法速记法注意这两个例子并不是完全相等,只要变量是一个真值,该表达式就是成立的。 19+ 个 JavaScript 快速编程技巧 — SitePoint 这确实是一篇针对于基于 JavaScript 语言编程的开发者必读的文章。在过去几年我学习 JavaScript 的时候,我写下了这篇文章,并将其作为 JavaS...
摘要:常规写法速记法判断变量是否存在速记法这可能会有些琐碎,但是值得一提。常规写法速记法注意这两个例子并不是完全相等,只要变量是一个真值,该表达式就是成立的。 19+ 个 JavaScript 快速编程技巧 — SitePoint 这确实是一篇针对于基于 JavaScript 语言编程的开发者必读的文章。在过去几年我学习 JavaScript 的时候,我写下了这篇文章,并将其作为 JavaS...
摘要:子选择器只对直接后代有影响的选择器,而对孙子后代以及多层后代不产生作用。注意在中,只支持后代选择器,不支持子选择器盒子模型框模型介绍给下的设置宽度,那么他们将平均掉它们所占容器的宽度。元素要单独占一行。 赞助我以写出更好的文章,give me a cup of coffee? 2017最新最全前端面试题 选择器的分组 CSS选择器分为 1.群组选择器 如:p, body, img,...
摘要:代码资料文件文件文件关于系列的的网页的操作需要权限的相关文档关于浏览器无法一些元素无法设置属性的解决方案和原因 react代码资料: 文件:packages/react-dom/src/client/setInnerHTML.js /** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code...
阅读 2135·2021-11-25 09:43
阅读 2187·2021-11-24 09:39
阅读 1508·2021-11-22 12:02
阅读 2966·2021-11-17 09:33
阅读 3372·2021-11-15 11:38
阅读 2607·2021-10-13 09:40
阅读 1025·2021-09-22 15:41
阅读 1656·2019-08-30 10:58