HTTP安全请求头

栏目: 后端 · 前端 · 发布时间: 7年前

内容简介:HTTP安全请求头

1.X-XSS-Protection

功能

跨站脚本,通常缩写为XSS就是攻击者导致页面加载一些恶意的JavaScript攻击. X-XSS-Protection 在Chrome和Inter Explorer的中旨在防止反射型XSS 攻击者发送包含恶意代码的请求 攻击。

X-XSS-Protection: 0; (关闭XSS过滤)  
X-XSS-Protection: 1; (启用XSS过滤,如果检测到跨站脚本攻击,浏览器将清除页面(删除不安全的部分))  
X-XSS-Protection: 1; mode=block  (启用XSS过滤。 如果检测到攻击,浏览器将不会清除页面,而是阻止页面加载)  
1; report=<reporting-URI>  (Chromium only) (启用XSS过滤。 如果检测到跨站脚本攻击,浏览器将清除页面并使用CSP report-uri指令的功能发送违规报告)

使用方法

(由于GHOST不支持表格,所以这里我就截图展示了) HTTP安全请求头

浏览器兼容性

PC版

HTTP安全请求头 移动版

HTTP安全请求头

2.Content Security Policy

功能

Content Security Policy 可以看成 X-XSS-Protection 的更高级版本。虽然 X-XSS-Protection 能阻止来自请求中的XSS攻击,但是它并不能阻止来自本服务器上恶意的脚本或者链接到外面服务器上的恶意脚本。

CSP定义了浏览器可以加载的资源来源。你可以为 script , images , fonts , css 设置一个白名单

使用方法

CSP不能阻止所有的XSS攻击,但是它能明显减轻XSS的攻击影响,在深度防御XSS中是一个重要的方式

HTTP安全请求头

使用示例

Content-Security-Policy: script-src 'self' https://apis.google.com

只会下载本域及apis.google.com中的脚本

Content-Security-Policy "base-uri 'self'

限制文档 base 元素中只能使用当前域名

浏览器兼容性

HTTP安全请求头 更多参数 点此查看

3.HTTP Strict Transport Security (HSTS)

功能

当我们想与某人进行安全通讯时,我们要面对两个问题:第一个问题就是隐私;我们想保证除了对方以外,没有第二个人能收到我们的信息。第二个问题就是身份认证;即我们怎么知道收到消息的人就是我们想发送的人。

HTTPS可以通过加密方式解决第一个问题,但是它在身份认证方面还是有一些问题。HSTS请求头可以解决"你自己知道与你通讯的人是否支持加密"这个问题。

HSTS可以减少 sslstrip 攻击 中间人攻击 , 当你使用了一个被恶意攻击者控制的WIFI网络,攻击者可以使你与服务器之间的加密无效。即使网站仅支持HTTPS协议,攻击者也可以通过HTTP流量进行中间人攻击,不需要SSL证书。

Strict-Transport-Security 请求头可以告诉浏览器必须始终使用你网站的加密。只要你使用了HSTS请求头并且没有过期,它就会不允许网站不加密,当请求不是通过HTTPS的时候就会爆错。

使用方法

HTTP安全请求头

使用示例

Strict-Transport-Security: max-age=<expire-time>  
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains  
Strict-Transport-Security: max-age=<expire-time>; preload

4.HTTP Public Key Pinning(HPKP)

功能

WEB上的信息是建立在证书颁发机构(CA)模型上的。两个CA可以向两个不同的人发送同一个域的证书,并且浏览器都信任他们,这就产生了一个问题,这种情况下,CA证书是可以“被妥协”的,所以攻击者就可以中间人攻击他们想攻击的目标,尽管那些目标站使用了SSL和HSTS!

HPKP请求头就是来解决这个问题的,这个请求头可以绑定一个证书。当浏览器第一次收到这个请求头的时候,它就会保存该证书。对于在 max-age 时间范围内的所有请求,浏览器都会返回失败,除非从服务器发送的信息中至少有一个证书是被绑定了的。

使用方法

HTTP安全请求头

使用示例

Public-Key-Pins: pin-sha256=<base64==>; max-age=<expireTime>;  
Public-Key-Pins: pin-sha256=<base64==>; max-age=<expireTime>; includeSubDomains  
Public-Key-Pins: pin-sha256=<base64==>; max-age=<expireTime>; report-uri=<reportURI>

includeSubDomains :HPKP适用的子域名

report-uri :发送报告URL

浏览器兼容性

PC版

HTTP安全请求头 移动

HTTP安全请求头

5.X-Frame-Options

功能

用来给浏览器指示允许一个页面可否在 <frame> , <iframe> , <object> 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击

使用方法

HTTP安全请求头

示例

X-Frame-Options: DENY  
X-Frame-Options: SAMEORIGIN  
X-Frame-Options: ALLOW-FROM https://example.com/

浏览器兼容

  1. PC端

HTTP安全请求头 2. 移动端

HTTP安全请求头

6.X-Content-Type-Options

功能

互联网上的资源有各种类型,通常浏览器会根据响应头的 Content-Type 字段来分辨它们的类型。例如: text/html 代表html文档, image/png 是PNG图片, text/css 是CSS样式文档。然而,有些资源的 Content-Type 是错的或者未定义。这时,某些浏览器会启用 MIME-sniffing 来猜测该资源的类型,解析内容并执行。 X-Content-Type-Options 告诉浏览器 content-type 是由我定义的。

使用方法

HTTP安全请求头

7.Referrer-Policy

功能

在页面引入图片、JS 等资源,或者从一个页面跳到另一个页面,都会产生新的 HTTP 请求,浏览器一般都会给这些请求头加上表示来源的 Referrer 字段,但是 Referrer 的值中可能包含用户的敏感信息,如 session-id 等。

Referrer-Policy 请求头允许你自定义浏览器发送的referrer字段内容。

使用方法

HTTP安全请求头

示例

Referrer-Policy: "no-referrer" //任何情况下都不发送 Referrer 信息

Referrer-Policy: "no-referrer-when-downgrade" //仅当发生协议降级(如 HTTPS 页面引入 HTTP 资源,从 HTTPS 页面跳到 HTTP 等)时不发送 Referrer 信息.浏览器默认采用

Referrer-Policy: "origin" //发送只包含 host 部分的 Referrer

Referrer-Policy: "origin-when-cross-origin" //仅在发生跨域访问时发送只包含 host 的 Referrer,同域下还是完整的

Referrer-Policy: "same-origin"   //跨域时不发送referrer

Referrer-Policy: "strict-origin"   //HTTPS->HTTPS发送  HTTPS->HTTP不发送 

Referrer-Policy: "strict-origin-when-cross-origin" //跨域时HTTPS->HTTPS发送  HTTPS->HTTP不发送

Referrer-Policy: "unsafe-url"  //统统都发送 Referrer 信息

8.Cookie Options

功能

将Cookies标记成 secure 将只会在HTTPS协议中传递,这样就可以防止攻击者中间人攻击时读取用户Cookies了。

HttpOnly 的cookie不能在javascript内访问。因此,如果存在XSS漏洞,攻击者就无法立即窃取cookie

SameSite 帮助防止跨源请求伪造(CSRF)攻击。这是一个用户可能访问的不同网站,无意中欺骗他们对你的站点提出请求,例如,通过包含一个图像来获取GET请求,或者使用javascript提交一个POST请求的表单。一般来说,人们使用CSRF令牌来抵御这种攻击。一个标记为SameSite的cookie不会被发送到另一个站点.它有两种模式: laxstrict

lax 模式允许在GET请求上下文中发送 cookie , strict 模式则不发送任何第三方的 cookie

使用方法

HTTP安全请求头 示例:

Set-Cookie: <key>=<value>; Expires=<expiryDate>; Secure; HttpOnly; SameSite=strict

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

How to Build a Billion Dollar App

How to Build a Billion Dollar App

George Berkowski / Little, Brown Book Group / 2015-4-1 / USD 24.95

Apps have changed the way we communicate, shop, play, interact and travel and their phenomenal popularity has presented possibly the biggest business opportunity in history. In How to Build a Billi......一起来看看 《How to Build a Billion Dollar App》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具