Content-Security-Policy —— HTML HTTP的内容安全策略

限制可以通过脚本接口加载的url,受限制的API有

  • <a>标签的ping属性

  • WindowOrWorkerGlobalScope.fetch

  • XMLHttpRequest

  • EventSource

  • Navigator.sendBeacon()

示例

// 以下链接都将不被允许

default-src

该指令用作其他 CSP 获取指令的后备。 对于其它指令,用户代理查找 default-src 指令并为其使用此值

font-src

指令指定使用@font-face 加载的字体的有效来源。

示例

// 以下字体将无法加载

frame-src

指定使用<frame><iframe>等元素加载嵌套浏览上下文的有效源。

示例

见 [[#child-src]],将<meta>child-src改为frame-src即可

img-src

指定图像和favicon的有效源

特殊可选来源
  • 'strict-dynamic':严格的动态源代码表达式指定,通过使用nonce或hash将显式给予标记中存在的脚本的信任传播到该根脚本加载的所有脚本。同时,任何允许列表或源表达式(如“self”或“unsafe inline”)都将被忽略

  • 'report-sample': 要求在违规报告中包含违规代码的样本

示例

<meta http-equiv=“content-security-policy” content="

img-src https://www.baidu.com/; ">

// 以下图片将无法加载

example picture
manifest-src

指定哪些manifest可以应用到资源。

示例

<meta http-equiv=“content-security-policy” content="

manifest-src https://www.baidu.com/; ">

// 以下清单文件将无法加载

media-src

指定使用<audio><video>元素加载媒体的有效源。

示例

<meta http-equiv=“content-security-policy” content="

media-src https://www.baidu.com/; ">

// 以下音频与视频将不会被加载和播放

object-src

指定<object><embed><applet>元素的有效源

示例

<meta http-equiv=“content-security-policy” content="

object-src https://www.baidu.com/; ">

// 以下控件将不会被加载

prefetch-src

指令指定可以预取或预呈现的有效源

示例

<meta http-equiv=“content-security-policy” content="

prefetch-src https://www.baidu.com/; ">

// 以下资源将不会被预拉取或预渲染

script-src

指令指定 JavaScript 的有效来源。 这不仅包括直接加载到 <script> 元素中的 URL,还包括可以触发脚本执行的内联脚本事件处理程序 (onclick) 和 XSLT 样式表

特殊可选来源
  • 'strict-dynamic':严格的动态源代码表达式指定,通过使用nonce或hash将显式给予标记中存在的脚本的信任传播到该根脚本加载的所有脚本。同时,任何允许列表或源表达式(如“self”或“unsafe inline”)都将被忽略

  • 'report-sample': 要求在违规报告中包含违规代码的样本

示例

<meta http-equiv=“content-security-policy” content="

script-src https://www.baidu.com/; ">

// 以下资源将不会被预拉取或预渲染

// 以下脚本将不会被加载或执行

// 但是可以通过addEventListener方法来调用

document.getElementById(“btn”).addEventListener(‘click’, doSomething);

style-src

指定样式表的有效源

<meta http-equiv=“content-security-policy” content="

style-src https://www.baidu.com/; ">

// 以下样式表将不会被加载或应用

文档型指令

base-uri

限制可在文档的<base>元素中使用的URL

特殊可选来源
  • 'strict-dynamic':严格的动态源代码表达式指定,通过使用nonce或hash将显式给予标记中存在的脚本的信任传播到该根脚本加载的所有脚本。同时,任何允许列表或源表达式(如“self”或“unsafe inline”)都将被忽略

  • 'report-sample': 要求在违规报告中包含违规代码的样本

示例

// 控制台将会报错,改配置将不会被应用

sendbox

为请求的资源启用沙盒,类似于<iframe>沙盒属性。它对页面的操作应用限制,包括阻止弹出窗口、阻止插件和脚本的执行以及强制执行同一源策略。

允许的配置值

不允许应用上文的[[#可选来源]]

  • allow-downloads: 允许在用户单击按钮或链接后下载

  • allow-forms: 允许页面提交表单。 如果不使用该关键字,则不允许进行此操作

  • allow-modals: 允许页面打开模式窗口

  • allow-orientation-lock: 允许页面禁用锁定屏幕方向的功能

  • allow-pointer-lock: 允许页面使用指针锁 API

  • allow-popups: 允许弹出窗口(例如来自 window.open、target=“_blank”、showModalDialog)。 如果未使用此关键字,则该功能将默默地失败。

  • allow-popups-to-escape-sandbox 允许沙盒文档打开新窗口,而无需对其强制使用沙盒标志。例如,这将允许安全地对第三方广告进行沙盒处理,而无需对登录页施加相同的限制。

  • allow-presentation. 允许嵌入程序控制iframe是否可以启动表示会话

  • allow-same-origin 允许将内容视为来自其正常来源。如果不使用此关键字,则嵌入的内容将被视为来自唯一的来源

  • allow-scripts: 允许页面运行脚本(但不创建弹出窗口)。如果不使用此关键字,则不允许此操作

  • allow-top-navigation: 允许页面将内容导航(加载)到顶级浏览上下文。如果不使用此关键字,则不允许此操作。

  • allow-top-navigation-by-user-activation 允许资源浏览顶级浏览上下文,但只有在用户手势启动时才允许

导航型指令

form-action

限制表单提交目标的URL

特殊可选来源
  • 'strict-dynamic':严格的动态源代码表达式指定,通过使用nonce或hash将显式给予标记中存在的脚本的信任传播到该根脚本加载的所有脚本。同时,任何允许列表或源表达式(如“self”或“unsafe inline”)都将被忽略

  • 'report-sample': 要求在违规报告中包含违规代码的样本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值