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不支持表格,所以这里我就截图展示了) 下辈子想做头猪的博客

浏览器兼容性

PC版

下辈子想做头猪的博客
移动版

下辈子想做头猪的博客

2.Content Security Policy

功能

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

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

使用方法

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

下辈子想做头猪的博客

使用示例

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

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

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

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

浏览器兼容性

下辈子想做头猪的博客
更多参数点此查看

3.HTTP Strict Transport Security (HSTS)

功能

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

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

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

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

使用方法

下辈子想做头猪的博客

使用示例
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时间范围内的所有请求,浏览器都会返回失败,除非从服务器发送的信息中至少有一个证书是被绑定了的。

使用方法

下辈子想做头猪的博客

使用示例
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版

下辈子想做头猪的博客
移动

下辈子想做头猪的博客

5.X-Frame-Options

功能

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

使用方法

下辈子想做头猪的博客

示例
X-Frame-Options: DENY  
X-Frame-Options: SAMEORIGIN  
X-Frame-Options: ALLOW-FROM https://example.com/  
浏览器兼容
  1. PC端

下辈子想做头猪的博客
2. 移动端

下辈子想做头猪的博客

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是由我定义的。

使用方法

下辈子想做头猪的博客

7.Referrer-Policy

功能

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

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

使用方法

下辈子想做头猪的博客

示例
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

使用方法

下辈子想做头猪的博客
示例:

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

欢迎大家加入小密圈,一起交流进步

zhutougg

继续阅读此作者的更多文章