内容简介: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/
浏览器兼容
- 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不会被发送到另一个站点.它有两种模式: lax
和 strict
。
lax
模式允许在GET请求上下文中发送 cookie
, strict
模式则不发送任何第三方的 cookie
使用方法
示例:
Set-Cookie: <key>=<value>; Expires=<expiryDate>; Secure; HttpOnly; SameSite=strict
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 详解nginx的请求限制(连接限制和请求限制)
- angular请求防抖,以及处理第一次请求失效
- RxHttp 一条链发送请求,新一代Http请求神器(一)
- RxHttp 一条链发送请求,新一代Http请求神器(一)
- 利用Jsonp跨域请求数据(原生和Jquery的ajax请求),简单易懂!
- Python网络请求库Requests,妈妈再也不担心我的网络请求了
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Oricle8i Web开发指南
(美)Bradley D.Brown / 机械工业出版社 / 2001-6 / 78.00元
本书用实际通用的策略,阐明了怎样一起来看看 《Oricle8i Web开发指南》 这本书的介绍吧!