内容安全策略(content-security-policy)

从容器宽度到业务页面,理解 SAP UI5 的 Layout Breakpoint SAP UI5/Fiori中的Layout Breakpoint是响应式设计的核心机制,它根据控件可用空间而非设备类型自动调整布局。关键点包括: 通过ResponsiveGridLayout实现表单自适应,label和字段在不同宽度下智能排列; 利用Grid和GridData的12列流式布局,实现卡片式内容的自动换行; 表格通过pop-in机制在窄屏时折叠次要列; 页面级布局由Fiori floorplan(如Object Page)自动处理响应式变化。 开发时应遵循: 优先使用内置响应式控件而非手动判断设 阅读详情

1. iframe

在使用iframe 的时候

<iframe style="border:0;width:100%;height:100%" src="https://github.com/join"/>

请求拒绝
经查 报的是
Refused to frame 'https://github.com/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'none'".

Refused to frame ‘https://github.com/’ because an ancestor violates the following Content Security Policy directive: “frame-ancestors ‘none’”.

原因是 点击劫持与安全策略

点击劫持与安全策略

禁止页面被放在iframe里加载主要是为了防止点击劫持(Clickjacking):
防止点击劫持(Clickjacking)
具体的,对于点击劫持,主要有 3 项应对措施:

  • CSP(Content Security Policy,即内容安全策略)
  • X-Frame-Options
  • framekiller

服务端设置

通过设置 HTTP 响应头来声明 CSP 和X-Frame-Options,例如:

# 不允许被嵌入,包括<frame>, <iframe>, <object>, <embed> 和 <applet>
Content-Security-Policy: frame-ancestors 'none'
# 只允许被同源的页面嵌入
Content-Security-Policy: frame-ancestors 'self'
# 只允许被白名单内的页面嵌入
Content-Security-Policy: frame-ancestors www.example.com

# 不允许被嵌入,包括<frame>, <iframe>, <embed> 和 <object>
X-Frame-Options: deny
# 只允许被同源的页面嵌入
X-Frame-Options: sameorigin
# (已废弃)只允许被白名单内的页面嵌入
X-Frame-Options: allow-from www.example.com

还有个与frame-ancestors长得很像的frame-src,但二者作用相反,后者用来限制当前页面中的与所能加载的内容来源

至于 framekiller,则是在客户端执行一段 JavaScript,从而反客为主:

// 原版
<script>
if(top != self) top.location.replace(location);
</script>

// 增强版
<style> html{display:none;} </style>
<script>
if(self == top) {
  document.documentElement.style.display = 'block';
} else {
  top.location = self.location;
}
</script>

而 Github 登录页,同时设置了 CSP 和X-Frame-Options响应头:

content-security-policy: 
	default-src 'none'; 
	base-uri 'self'; 
	block-all-mixed-content; 
	connect-src 'self' uploads.github.com www.githubstatus.com collector.githubapp.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events wss://alive.github.com; font-src github.githubassets.com; 
	form-action 'self' github.com gist.github.com; 
	frame-ancestors 'none'; 
	frame-src render.githubusercontent.com octocaptcha.com; 
	img-src 'self' data: github.githubassets.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; 
	manifest-src 'self'; 
	media-src 'none'; 
	script-src github.githubassets.com; 
	style-src 'unsafe-inline' github.githubassets.com; 
	worker-src github.com/socket-worker-5029ae85.js gist.github.com/socket-worker-5029ae85.js
Content-Security-Policy: frame-ancestors 'none';
X-Frame-Options: deny

因此无法通过iframe嵌入,那么,有办法打破这些限制吗?

解决思路

  1. 篡改响应头,使之满足iframe安全限制
  2. 不直接加载源内容,绕过iframe安全限制

在资源响应到达终点之前的任意环节,拦截下来并改掉 CSP 与X-Frame-Options,比如在客户端收到响应时拦截篡改,或由代理服务转发篡改

而另一种思路很有意思,借助Chrome Headless加载源内容,转换为截图展示到iframe中。例如Browser Preview for VS Code:

2. Content Security Policy,即内容安全策略

在这里插入图片描述
为了防止它们,要采取很多编程措施,非常麻烦。很多人提出,能不能根本上解决问题,浏览器自动禁止外部注入恶意脚本?
这就是"网页安全政策"(Content Security Policy,缩写 CSP)的来历

CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。

CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。

两种方法可以启用 CSP。

  • 通过 HTTP 头信息的Content-Security-Policy的字段。
Content-Security-Policy: script-src 'self'; object-src 'none';
style-src cdn.example.org third-party.org; child-src https:
  • 通过网页的标签
<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">

,CSP 做了如下配置:

脚本:只信任当前域名
标签:不信任任何URL,即不加载任何资源
样式表:只信任cdn.example.org和third-party.org
框架(frame):必须使用HTTPS协议加载
其他资源:没有限制

启用后,不符合 CSP 的外部资源就会被阻止加载。

限制选项

  1. 资源加载限制
  • script-src:外部脚本
  • style-src:样式表
  • img-src:图像
  • media-src:媒体文件(音频和视频)
  • font-src:字体文件
  • object-src:插件(比如 Flash)
  • child-src:框架
  • frame-ancestors:嵌入的外部资源(比如、、和)
  • connect-src:HTTP 连接(通过 XHR、WebSockets、EventSource等)
  • worker-src:worker脚本
  • manifest-src:manifest 文件
  1. default-src
    用来设置上面各个选项的默认值。

Content-Security-Policy: default-src ‘self’
#限制所有的外部资源,都只能从当前域名加载。

如果同时设置某个单项限制(比如font-src)和default-src,前者会覆盖后者,即字体文件会采用font-src的值,其他资源依然采用default-src的值。
3. URL 限制
网页会跟其他 URL 发生联系,这时也可以加以限制。

frame-ancestors:限制嵌入框架的网页
base-uri:限制<base#href>
form-action:限制<form#action>
  1. 其他限制
block-all-mixed-content:HTTPS 网页不得加载 HTTP 资源(浏览器已经默认开启)
upgrade-insecure-requests:自动将网页上所有加载外部资源的 HTTP 链接换成 HTTPS 协议
plugin-types:限制可以使用的插件格式
sandbox:浏览器行为的限制,比如不能有弹出窗口等。
  1. report-uri
    有时,我们不仅希望防止 XSS,还希望记录此类行为。report-uri就用来告诉浏览器,应该把注入行为报告给哪个网址。
Content-Security-Policy: default-src 'self'; ...; report-uri /my_amazing_csp_report_parser;

上面代码指定,将注入行为报告给/my_amazing_csp_report_parser这个 URL。

Content-Security-Policy-Report-Only

除了Content-Security-Policy,还有一个Content-Security-Policy-Report-Only字段,表示不执行限制选项,只是记录违反限制的行为。

它必须与report-uri选项配合使用。

Content-Security-Policy-Report-Only: default-src 'self'; ...; report-uri /my_amazing_csp_report_parser;

选项值

每个限制选项可以设置以下几种值,这些值就构成了白名单。

主机名:example.org,https://example.com:443
路径名:example.org/resources/js/
通配符:*.example.org,*://*.example.com:*(表示任意协议、任意子域名、任意端口)
协议名:https:、data:
关键字'self':当前域名,需要加引号
关键字'none':禁止加载任何外部资源,需要加引号
多个值也可以并列,用空格分隔。

Content-Security-Policy: script-src ‘self’ https://apis.google.com
如果同一个限制选项使用多次,只有第一次会生效。

错误的写法

script-src https://host1.com; script-src https://host2.com

正确的写法

script-src https://host1.com https://host2.com

如果不设置某个限制选项,就是默认允许任何值。

script-src 的特殊值

除了常规值,script-src还可以设置一些特殊值。注意,下面这些值都必须放在单引号里面。

'unsafe-inline':允许执行页面内嵌的&lt;script>标签和事件监听函数
unsafe-eval:允许将字符串当作代码执行,比如使用eval、setTimeout、setInterval和Function等函数。
nonce值:每次HTTP回应给出一个授权token,页面内嵌脚本必须有这个token,才会执行
hash值:列出允许执行的脚本代码的Hash值,页面内嵌脚本的哈希值只有吻合的情况下,才能执行。
nonce值的例子如下,服务器发送网页的时候,告诉浏览器一个随机生成的token。
Content-Security-Policy: script-src 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa'

页面内嵌脚本,必须有这个token才能执行。

<script nonce=EDNnf03nceIOfn39fn3e9h3sdfa>
  // some code
</script>

hash值的例子如下,服务器给出一个允许执行的代码的hash值。

Content-Security-Policy: script-src 'sha256-qznLcsROx4GACP2dm0UCKCzCG-HiZ1guq6ZZDob_Tng='

下面的代码就会允许执行,因为hash值相符。

注意,计算hash值的时候,

除了script-src选项,nonce值和hash值还可以用在style-src选项,控制页面内嵌的样式表。

注意点

(1)script-src和object-src是必设的,除非设置了default-src。

因为攻击者只要能注入脚本,其他限制都可以规避。而object-src必设是因为 Flash 里面可以执行外部脚本。

(2)script-src不能使用unsafe-inline关键字(除非伴随一个nonce值),也不能允许设置data:URL。

下面是两个恶意攻击的例子。

<img src="x" onerror="evil()">
<script src="data:text/javascript,evil()"></script>

(3)必须特别注意 JSONP 的回调函数。

上面的代码中,虽然加载的脚本来自当前域名,但是通过改写回调函数,攻击者依然可以执行恶意代码。

uni-app - Refused to display ‘xxx‘ in a frame because an ancestor violates the following Content Sec uni-app-Refusedtodisplay‘xxx‘inaframebecauseanancestorviolatesthefollowingContentSec 阅读详情

相关推荐

首屏先活起来,SAP UI5 Above the fold loading 的性能逻辑和使用边界

文章摘要:SAP Fiori应用的首屏加载体验(Above the fold loading)对业务用户至关重要。该策略优先加载首屏内容(如标题、KPI、主要操作等),而非一次性加载全部资源。在SAP UI5中,这涉及异步加载、请求优化和视图延迟渲染等技术。对于Object Page等复杂页面,Fiori elements已产品化此功能,通过请求分组和懒加载机制确保首屏快速呈现。开发者需注意避免因过度控制Section可见性而导致的请求串行化问题。该理念强调加载顺序优化而非简单减少加载量,是提升企业应用用户

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2016

an ancestor violates the following Content Security Policy directive: “frame-ancestors ‘none‘”.

一.从 iframe 说起 利用iframe能够嵌入第三方页面,例如: <iframe style="width: 800px; height: 600px;" src="https://www.baidu.com"/> 然而,并非所有第三方页面都能够通过iframe嵌入: <iframe style="width: 800px; height: 600px;" src="https://github.com/join"/> Github 登录页并没有像百度首页一样

sqlora的专栏 2万+

亲友圈棋牌的逆向工程_棋牌透视分析研究(一)

透视也能实现,有些台子就自带控制,这种东西权限只是存在于平台运营者手中,即便逆向破解也很难发现,但也有那么一些棋牌 比如斗牛或者跑得快,会先发给你的内存中存放当前的牌的信息,这样你就可以知道对面的牌是什么,但肯定也是加密了。明明是zip却无法解压,这很明显是属于被加密了, 那么我们就要开始找他的加密内容,一般加密的秘钥都会存储在so里面。写这一篇文章了,其实也想了很久,最终还是决定写了, 有些朋友找我做过菠菜的逆向,bjl,甚至是足球的!但很遗憾的告诉大家,这里是找不到的。

m0_63368535的博客 5753

iframe嵌入第三方链接页面不展示、cookie丢失等问题总结

需求是这样的:有一个第三方开发的系统的页面需要嵌入到我们的项目中,对方提供了一个地址:http://ip:port/path?name=xxx&pw=xxx。 当我们想使用iframe来展示这个地址的时候,出现以下现象和错误: 并且控制台报错: Refused to frame 'http://10.65.78.23:30002/' because an ancestor violates the following Content Security Policy directive: "

dong__xue的博客 4万+

【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第一节 lua框架的建立

魔兽世界插件实战笔记从入门到放弃的心理历程 第二节 lua框架的建立 找到魔兽世界的安装目录,找到插件的默认位置:\World of Warcraft\_retail_\Interface\AddOns,在这里建立一个文件夹,魔兽的插件都是用一个文件夹来区分的,第一课吗,就用Lesson_one吧。 下面建立的三个文件,第一个点toc文件是最重要的一个,它是魔兽客户端识别插件的一个标识符。 魔兽版本号有一个函数可以查询在WoWLua下面运行:print("当前游戏版本号:",(select(4,GetBui

qq_33075391的博客 6441

用Python玩转LQR控制:3行核心代码实现倒立摆稳定控制(附Jupyter Notebook)

本文通过Python实战演示了如何使用LQR算法实现倒立摆的稳定控制。文章以直观方式解释LQR原理,提供从系统建模、核心代码求解到参数调优的完整流程,并附有可运行的Jupyter Notebook代码。重点介绍了如何利用SciPy库快速计算最优反馈增益,并通过仿真验证控制效果,为运动控制实践提供了即学即用的指南。

weixin_29311017的博客 77

http Content Security Policy内容安全策略

默认情况下,使用WebExtension API开发的扩展具有内容安全策略(CSP)。这限制了它们可以从中加载<script>和<object>资源的源,并禁止了诸如之类的潜在不安全做法。eval() 本文简要介绍了什么是CSP,默认策略是什么以及对扩展的含义以及扩展如何更改默认CSP。 内容安全策略(CSP)是一种有助于防止网站无意间执行恶意内容的机制。网站使用从服务器发送的HTTP标头指定CSP。CSP最关心的是指定各种内容的合法来源,例如脚本或嵌入式插件。例如,网站可..

focus on security 856

告别电机啸叫!手把手教你配置TMC5160的StealthChop2静音模式(附参数自整定避坑指南)

本文详细介绍了如何通过配置TMC5160的StealthChop2模式彻底消除3D打印机电机噪音。从硬件准备到参数自整定,再到高级调优与异常处理,手把手教你实现实验室级别的静音效果,提升打印质量和使用体验。

weixin_33724659的博客 485

WEB应用内容安全策略(Content Security Policy)

它通过让开发者对自己WEB应用声明一个外部资源加载的白名单,使得客户端在运行WEB应用时对外部资源的加载做出筛选和识别,只加载被允许的网站资源.对于不被允许的网站资源不予加载和执行.同时,还可以将WEB应用中出现的不被允许的资源链接和详情报告给我们指定的网址.如此,大大增强了WEB应用的安全性.使得攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的服务器.使用这种模式,将会直接阻止非法的外部资源加载,同时也可以选择是否配置将非法资源加载的链接和行为报告给我们指定的网址。

A_991128a的博客 5023

virtuoso:layout如何做flat修drc

有些drc在virtuoso layout中修更节省时间,比如遇到一些via array需要做删改时,发现工具把via array做成了一个cell,如图。去改cell可能会影响很多via,所以最好的办法是做flat,去调整cut,比如删除。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 337

AI应用架构师视角:AI技术引发的全球经济格局重构,你看懂了吗?

本文将从AI应用架构师的独特视角,拆解AI技术栈(算力/算法/数据)如何通过"架构渗透"重塑产业价值链,分析中美欧等主要经济体的AI战略差异如何改写全球分工格局,并为企业与个人提供一套可落地的"AI经济适应性框架"。当OpenAI的GPT-4在代码生成、多模态理解上展现出超越人类的能力,当英伟达的H100芯片成为全球科技巨头争抢的"数字石油",当中国的AI大模型在电商、金融等场景实现规模化落地——我们正站在一场由AI技术引发的全球经济重构的临界点上。AI重构全球经济格局的过程,既是挑战,更是机遇。

小白菜的博客 1255

内容安全策略CSP(Content-Security-Policy)

内容安全策略(CSP),其核心思想十分简单:网站通过发送一个 CSP 头部,来告诉浏览器什么是被授权执行的与什么是需要被禁止的。其被誉为专门为解决XSS攻击而生的神器。 1.前言 内容安全策略 (CSP) 是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。 CSP 的实质就是白...

yangyang的专栏 5万+

C#实现低通和高通滤波算法

低通滤波器允许通过低于某个截止频率的信号成分,并且抑制高于该频率的成分。而高通滤波器则允许通过高于某个截止频率的信号成分,并抑制低于该频率的成分。巴特沃斯滤波器是一种对称的滤波器,具有平坦的幅度响应和最小的群延迟。低通和高通滤波是数字信号处理中常用的滤波技术,用于滤除或增强信号中的特定频率成分。在本篇文章中,我们将使用C#编程语言来实现低通和高通滤波算法。以上就是使用C#实现低通和高通滤波算法的示例代码。你可以根据自己的需求调整截止频率和采样率,将这些代码应用于你的项目中。是滤波器的截止频率,

XisVisual_Basic的博客 1264

内容安全策略 Content-Security-Policy

1、限制资源获取:限制网页当中一系列的资源获取的情况,从哪里获取,请求发到哪个地方限制方式:default-src限制全局的和链接有关的作用范围根据资源类型(connect-src、img-src等),限制资源范围2、报告资源获取越权:在网页当中获取了一些我们不应该获取的资源的时候,给服务进行报告,报告资源获取越权,然后做出调整之所以报这个错误,就是我们加了这个头的作用。这个时候 inline脚本还是不能执行的。如果引入外链的脚本文件,则会报错,这样就可限制,只能使用我们本站使用的脚本。

qq_30436011的博客 3万+

【图像增强】论文精读:Correlation Matching Transformation Transformers for UHD Image Restoration(UHDformer)

论文题目:Correlation Matching Transformation Transformers for UHD Image Restoration —— 用于UHD图像恢复的相关匹配变换变压器AAAI 2024!本文提出了一种用于超高清(UHD)图像恢复的通用变压器UHDformer。UHDformer包含两个学习空间:(a) 高分辨率空间中的学习,(b)低分辨率空间中的学习。前者学习多层次的高分辨率特征,融合低层特征,重建残差图像,后者从高分辨率特征中学习更多的代表性特征,以促进更好的恢复。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 275

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

可以防止[[跨站点脚本攻击]]语法指令说明。

2401_84023314的博客 2037

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

内容安全策略(Content Security Policy)

内容安全策略(Content Security Policy)是一种声明的安全机制,可以让网站运营者能够控制遵循CSP的用户代理(通常是浏览器)的行为。通过控制要启用哪些功能,以及从哪里下载内容,可以减少网站的攻击面。 CSP的主要目的是防御跨站点脚本(cross-ste scripting,XSS)攻击。例如,CSP可以完全禁止内联的JavaScript,并且控制外部代...

qq_34741091的博客 4520

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

CSP Content Security Policy(内容安全策略)

CSP 前端中的 CSP 指的是 Content Security Policy(内容安全策略),是一种用于提升网站安全性的浏览器功能。CSP 主要用于防止 XSS(跨站脚本攻击) 和 数据注入攻击,通过限制网页中的内容来源(如脚本、样式、图像、媒体等)来降低被恶意代码利用的风险。

睡不着的可乐博客 2325

Content Security Policy (CSP)内容安全策略

CSP简介 Content Security Policy(CSP),内容(网页)安全策略,为了缓解潜在的跨站脚本问题(XSS攻击),浏览器的扩展程序系统引入了内容安全策略(CSP)这个概念。 CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。 两种方法启用 CSP 一种是通过 HTTP 响应头信息的Content-Security-Policy字段。 一种是通过网页的标签。 <meta h

飞翔的熊blabla 1334

Content Security Policy内容安全策略减损XSS

Content Security Policy(CSP)通过白名单机制阻止恶意脚本执行,有效防御反射型和存储型XSS攻击。配合nonce、hash和Report-Only模式,可在不修改业务代码的情况下大幅提升前端安全性,是现代Web应用不可或缺的运行时防线。

weixin_35677363的博客 453

Spring Boot项目中怎么设置内容安全策略Content Security Policy

CSP是一种Web安全策略,通过告诉浏览器只允许特定来源的内容加载,可以有效减少XSS和其它代码注入的风险。通过HTTP头或HTML标签定义允许的资源来源;限制页面加载外部资源的权限,如脚本、样式表、图像等。跨站脚本攻击(XSS):阻止恶意脚本在页面中执行;数据注入:通过限制资源加载,减少不信任来源的数据注入可能性。nonce(Number Once)是一个临时的、唯一的字符串,它被添加到每个内联样式或脚本标签中,作为该标签的“授权令牌”。

m0_74825746的博客 1904
上一篇: vue 组件通讯
下一篇: 记忆 随便
ynchyong
博客等级 码龄18年 153粉丝 252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ynchyong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值