Content-Security-Policy —— HTML HTTP的内容安全策略
创始人
2025-09-08
0
本文详细解释了Content-Security-Policy(CSP)中的各种指令,如防止跨站脚本攻击,如何限制不同类型的资源来源,强调实践和系统学习的重要性,特别是在自学前端开发过程中避免常见问题。

可以防止[[跨站点脚本攻击]]

语法


Content-Security-Policy: ;

指令说明


获取资源型指令

可选来源
  •  : 因特网主机的名称或IP地址,以及可选的URL方案和/或端口号

  •  某种协议方案,符合该协议的均被视为有效源,例如:http:,https:,blob:,data: 等,注意,必须有冒号

  • 'self': 与当前文档同源(包括相同的URL协议地址和端口号),必须包括单引号

  • 'unsafe-eval' : 允许使用eval()和类似方法从字符串创建代码。必须包括单引号

  • 'unsafe-hashes':允许启用特定的内联事件处理程序。如果只需要允许内联事件处理程序,而不需要内联[xss_clean]元素或__javascript:url,那么这种方法比使用不安全的内联表达式更安全

  • 'unsafe-inline': 允许使用内联资源,例如内联[xss_clean]元素、__javascript:url、内联事件处理程序和内联<style>元素。单引号是必需的

  • 'none' : 引用空集合,即不匹配 url。需要单引号

  • 'nonce-':使用加密nonce(一次使用的数字)的特定内联脚本的允许列表。服务器必须在每次传输策略时生成唯一的nonce值。提供一个不可用的nonce是至关重要的,因为绕过资源的策略在其他方面是微不足道的。指定nonce会使现代浏览器忽略“不安全的内联”,这仍然可以为没有nonce支持的旧浏览器设置

  • '-':脚本或样式的sha256、sha384或sha512散列。此源代码的使用由两部分组成,两部分用破折号分隔:用于创建哈希的加密算法和脚本或样式的base64编码哈希。生成散列时,不要包含[xss_clean]或<style>标记,并注意大小写和空格很重要,包括前导或尾随空格

child-src

定义使用 <frame> 和 <iframe> 等元素加载的 Web Worker 和嵌套浏览上下文的有效来,不符合要求的请求将被用户代理视为致命的网络错误

如果要规范嵌套的浏览上下文和worker,应该分别使用frame src和worker src指令,而不是child src。

示例
// 框架里的页面将无法加载
connect-src

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

  • 标签的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

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


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

上一篇:composer中的php无法识别到fileinfo扩展

下一篇:没有了

相关内容

热门资讯

SIOCADDRT: Netw... SIOCADDRT: Network is unreachable SIOCADDRT: 网络不可达...
centos7下创建新用户和组 linux下添加,删除,修改,查看用户和用户组 1 .增加一个test组 groupadd test...
linux通过sed 修改文件... 13sy.txt里面内容如下 A; B; C; write by luohao199621; 1.要...
关于cannot remove... 关于cannot remove directory: Directory not empty的解决办...
mount: unknown ... mount: unknown filesystem type LVM2_member解决方案 系统启...
OpenMediaVault安... OpenMediaVault 是一个基于Debian的专用 Linux 发行版,用于构建网络连接存储...
centos7 双网卡双网关的... 最近公司需要在一台服务器上同时使用内网和外网,并且都需要跨网段访问,因此需要双网关,但是一台机子上只...
ethtool 命令详解 1 概述 ethtool 是用于查询及设置网卡参数的命令。 2 命令详解 2.1 命令格式 (1) ...
CentOS7单网卡设置双IP... linux系统CentOS7单网卡设置双IP的方法,centos7.5、7.6、7.7设置双IP教程...
Linux进程状态D,S,Z的... Linux进程状态top,ps中看到进程状态D,S,Z的含义 在top和ps命令中有一列显示进程状态...