赞
踩
本文主要用于介绍遇到的
HTTP Permissions-Policy header
和CSP
及XFO
内容,针对其实际运用做出记录,如何运用来巧妙限制脚本并保障网站的安全性
当然也可以直接搜寻 MDN 来了解更为直观,这里只讨论使用到的内容
Tips:
如果不生效,详情参考对应策略是否于当前测试浏览器中兼容
这部分是关于安全策略头的可选,但它不是所有的选项,只有我们经常使用的值
权限相关限制内容
指令 | 备注 |
---|---|
geolocation | 管理通过浏览器获取位置MSG |
syn-xhr | 管理是否允许异步调用,说白了是XMLHttpRequest |
microphone | 管理是否允许调用麦克风 |
camera | 管理是否允许调用视频 |
magnetometer | 管理是否允许调用陀螺仪相关内容,如果做了侦测相关脚本建议开启 |
gyroscope | 管理是否允许调用陀螺仪相关内容,角度相关的内容 |
fullscreen | 管理是否允许调用系统的全屏接口 |
这里可以限定加载的内容资源,仅允许特定网站加载内容
指令 | 备注 |
---|---|
default-src | 默认基础地址,其他的策略也是默认此设置来源值 |
connect-src | 限制连接的来源值 |
frame-ancestors | 允许特定父类页面加载的域名,以iframe的模式加载本页面 |
worker-src | 限制类worker 脚本的有效源头 |
style-src | 指定样式表的有效源 |
script-src | 指定JavaScript 的有效源 |
用来限制特定网站以
iframe
加载本页面,多用于兼容IE中 CSP不足的部分
取值 | 备注 |
---|---|
DENY | 意味着禁止所有网站加载 |
SAMEORIGIN | 意味只允许同源访问 |
ALLOW-FROM origin | 允许特定域名访问 |
首先说明 ,这里的策略一般都是针对其他嵌入内容的,对本网站的默认都是允许的。
取值 | 备注 |
---|---|
() | 意味着禁止 |
(self) | 意味只允许同源访问 |
* | 允许所有域名访问 |
# 单策略
Permissions-Policy: geolocation=()
# 多策略
Permissions-Policy: geolocation=(),fullscreen=()
Permissions-Policy: geolocation=(self "https://yourdomain.com")
Permissions-Policy: geolocation=*
# 默认下,相当于仅能同域名的iframe使用
Permissions-Policy: geolocation=*,frame-ancestors 'self'
# 允许其他域名的iframe使用,空格分割多个域名
Permissions-Policy: geolocation=*,frame-ancestors 'self' https://yourdomain.com
# 单个域名的iframe使用
Content-Security-Policy: frame-ancestors 'self' https://yourdomain.com
# 空格分割多个域名
Content-Security-Policy: frame-ancestors 'self' https://yourdomain.com https://yourdomain2.com
Content-Security-Policy: default-src 'self'; script-src 'nonce-RANDOM_STRING' 'strict-dynamic'; style-src 'self' 'unsafe-inline'
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
更多的域名,以空格分隔
# 单域名& 同源
Content-Security-Policy: frame-ancestors 'self' https://trusted-domain.com
# 多域名 & 同源
Content-Security-Policy: frame-ancestors 'self' https://trusted-domain1.com https://trusted-domain2.com
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。