)中 https://www.electronjs.org/zh/docs/latest/api/structures/browser-window-options 0x02 SubFrames 官方文档中.../docs/latest/api/browser-window#new-browserwindowoptions https://www.electronjs.org/docs/latest/api/browser-window.../zh/docs/latest/api/webview-tag https://www.electronjs.org/zh/docs/latest/api/web-contents-view 官方是不建议使用...webview 标签,在 Electron >= 5.0 版本后,默认不允许,使用的话必须在创建父窗口时显式地设置 webviewTag: true 直接使用上面测试 iframe 执行 Node.js...WebContentsView https://www.electronjs.org/zh/docs/latest/api/web-contents-view#class-webcontentsview-extends-view
这些脚本虽运行于渲染器的环境中,却因能访问 Node.js API 而拥有了更多的权限,当然,为了安全考虑,它的 API 是受限的,主要就是发起 IPC 请求或监听,将自定义的API和变量等传递给渲染进程使用...从修复代码可以看出,之前对于渲染进程访问蓝牙设备的默认请求未做有效处理,不知道后期会不会有对其他设备API请求存在此类问题 CVE-2022-29247 https://cve.mitre.org/cgi-bin...Chromium 的漏洞 Electron 修复的同时基本不会产生新的 CVE 编号,但是看版本发布说明,其实在此过程中修复了非常多的供应链漏洞,当然可能就是升级一下 Chromium 的事,但对于使用...的,也就是 RCE 开启 Nodejs 支持可能是功能实现需要吧,但是这非常危险,开发者要极力避免出现 XSS 、引入 iframe 等 3....name=CVE-2024-21625 0x04 如何评估 Electron 程序的安全性 https://www.electronjs.org/zh/docs/latest/tutorial/security
4.1.3 修复实现// 修复后的代码(使用DOMPurify)import DOMPurify from 'dompurify';const ProductComment = ({ comment }...4.2.3 修复实现// 修复后的CSRF保护方案let csrfToken = '';export const getCsrfToken = async () => { if (!...4.3.3 配置实现由于我使用Express服务器,AI 提供了中间件配置方案:// 安全头配置中间件const securityHeaders = (req, res, next) => { //...X-Frame-Options防止页面被嵌入iframe。HSTS强制使用HTTPS防止中间人攻击。∙参数解析:'unsafe-eval'和'unsafe-inline':平衡安全性与开发便利性。...阅读本文的收获,开发者将有以下收获:了解AI如何实际应用于前端安全漏洞识别与修复。学习XSS、CSRF等常见漏洞的具体修复策略。掌握将AI工具集成到开发工作流的最佳实践。
/zh/docs/latest/api/structures/browser-window-options https://www.electronjs.org/zh/docs/latest/api/window-open...如果未启用 popup,也没有声明窗口特性,则新的浏览上下文将是一个标签页。.../blog/window-open-fix 14.0 版本中修复 iframe + window.open 创建新窗口绕过安全策略漏洞 electrovolt 的文章中,在进行 Discord RCE...,实现绕过沙箱加载恶意页面 https://blog.electrovolt.io/posts/discord-rce/ 任意文件读取 在这个案例中,window.open 只是一个小工具,用 iframe...shell.openExternal(url) }) } return { action: 'deny' } }) }) 这个案例检查的是 url 是否符合规定,如果如何就使用
events https://nodejs.org/api/events.html 这个模块是 Node.js 中关于事件处理的模块,是发布、订阅模式的实现,这里允许预加载脚本使用应该是为了让预加载脚本具备事件处理相关的能力...因为计时器函数是全局函数,所以不需要调用 require('timers')来使用API。...({ submitURL: 'https://your-domain.com/url-to-submit' }) 如何构建崩溃日志收集系统可以点击上方的链接 nativeImage 使用 PNG 或...过度暴露 在上面的例子中,我们使用了 Electron 30.0.0 版本,开启了 sandbox ,使用预加载脚本使用 contextBridge 将 API 暴露给渲染进程,我们将打开文件功能进行了封装...,但是不小心暴露给了渲染进程;函数是给自己写的渲染进程使用的,结果同时暴露给了 iframe 这种嵌入内容等 预加载脚本是一个很好的代码审计的切入点,如果安全配置较为完善,则安全漏洞的利用基本都要通过预加载脚本传递数据
项目中面临下面几种异常场景,需要处理: 语法错误 事件异常 HTTP请求异常 静态资源加载异常 Promise 异常 Iframe 异常 页面崩溃 整体异常处理方案需要实现二方面的效果: 提升用户体验...所以,如果你希望当前可能出错的代码块后续的代码能够正常运行的话,那么你就得使用try...catch来主动捕获异常。 扩展: 实际上,出错代码是如何干扰后续代码的执行,是一个值得探讨的主题。...特定的错误信息,比如错误所在的生命周期钩子 // 只在 2.2.0+ 可用 } 复制代码 指定组件的渲染和观察期间未捕获错误的处理函数。...八、思考 Promise.catch 和 try catch 捕获异常有什么区别? ErrorBounary内部如何实现? 为什么unhandledrejection写在控制台是捕获不到错误的?...而写在HTML文件中就可以捕获到? 服务端渲染错误如何捕获?
,看看它们在 Electron 中是否还可以使用 https://www.electronjs.org/zh/docs/latest/tutorial/web-embeds https://developer.mozilla.org...权限策略的意义如下: 改变手机和第三方视频自动播放的默认行为 限制网站使用相机、麦克风、扬声器等敏感设备 允许 iframe 使用全屏 API 如果项目在视口中不可见,则停止对其进行脚本处理,以提高性能...资源时如何发送 referrer 头部 这个其实在之前文章 一次失败的漏洞串联尝试 中有提过,具体可以取值如下: 不发送 Referer 头 8) sandbox 控制应用于嵌入在 iframe>... console.log(123) 未显式这是 sandbox iframe.../zh/docs/latest/tutorial/web-embeds#webview https://www.electronjs.org/zh/docs/latest/api/webview-tag
主进程在 Node.js 环境中运行,这意味着它具有 require 模块和使用所有 Node.js API 的能力。...因此,一个浏览器窗口中的所有的用户界面和应用功能,都应与您在网页开发上使用相同的工具和规范来进行攥写 此外,这也意味着渲染器无权直接访问 require 或其他 Node.js API。...因为预加载脚本与浏览器共享同一个全局 Window 接口,并且可以访问 Node.js API,所以它通过在全局 window 中暴露任意 API 来增强渲染器,以便你的网页内容使用。.../zh/docs/latest/breaking-changes#%E9%87%8D%E5%A4%A7%E7%9A%84api%E6%9B%B4%E6%96%B0-50 https://www.electronjs.org...14.0 中修复的,所以我们再测试一下上下文隔离是不是也在 14.0 中解决的 确实在 14.0.0 中进行了修复 window.open sandbox 测试 上一节我们发现 window.open
总结一下,大概如下: 1、JS 语法错误、代码异常 2、AJAX 请求异常 3、静态资源加载异常 4、Promise 异常 5、Iframe 异常 6、跨域 Script error 7、崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...捕获到异常:',e); } 输出: Uncaught SyntaxError: Invalid or unexpected token 不过语法错误在我们开发阶段就可以看到,应该不会顺利上到线上环境。...九、iframe 异常 对于 iframe 的异常捕获,我们还得借力 window.onerror: window.onerror = function(message, source, lineno,...基于以下原因,我们可以使用 Service Worker 来实现网页崩溃的监控: 1、Service Worker 有自己独立的工作线程,与网页区分开,网页崩溃了,Service Worker一般情况下不会崩溃...十三、总结 回到我们开头提出的那个问题,如何优雅的处理异常呢?
总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...let name = 'jartto; console.log(nam); } catch(e) { console.log('捕获到异常:',e); } 输出: Uncaught SyntaxError...; onerror 无法捕获语法错误; 到这里基本就清晰了:在实际的使用过程中,onerror 主要是来捕获预料之外的错误,而 try-catch 则是用来在可预见情况下监控特定的错误,两者结合使用更加高效...iframe 异常 对于 iframe 的异常捕获,我们还得借力 window.onerror: window.onerror = function(message, source, lineno, colno...总结 回到我们开头提出的那个问题,如何优雅的处理异常呢?
文章首先复现攻击链路,详细解析代理转发逻辑与令牌捕获机制;继而剖析攻击者如何利用OAuth授权进行持久化驻留与横向扩散;随后提出多层次防御体系,涵盖终端验证强化、会话行为监控、第三方应用治理及邮件层检测策略...com),呈现与Google登录页像素级一致的界面;反向代理服务器(Reverse Proxy):接收前端请求,实时转发至https://accounts.google.com,并将响应回传给受害者;令牌捕获模块...2.2 代理实现机制攻击者通常使用轻量级Web框架(如Node.js + Express)构建代理。...即使用户未主动操作,攻击者也可利用已窃取的会话发起授权请求,并在后台自动批准(因会话有效)。...即使用户更改密码或注销会话,只要未显式撤销该应用授权,攻击者仍可凭refresh_token获取新的access_token,维持对账户的控制。
总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...; onerror 无法捕获语法错误; 到这里基本就清晰了:在实际的使用过程中,onerror 主要是来捕获预料之外的错误,而 try-catch 则是用来在可预见情况下监控特定的错误,两者结合使用更加高效...六、Promise Catch 在 promise 中使用 catch 可以非常方便的捕获到异步 error ,这个很简单。...九、iframe 异常 对于 iframe 的异常捕获,我们还得借力 window.onerror: window.onerror = function(message, source, lineno,...十三、总结 回到我们开头提出的那个问题,如何优雅的处理异常呢?
我们还会讲一下 JS 中内置的错误对象(Error, SyntaxError, ReferenceError等)以及如何定义自定义错误。...try块包含我们需要检查的代码 关键字throw用于抛出自定义错误 catch块处理捕获的错误 finally 块是最终结果无论如何,都会执行的一个块,可以在这个块里面做一些需要善后的事情 1.1 try...noSuchVariable; // undefined variable }, 1000); } catch (err) { console.log("这里不会被执行"); } 未捕获的...fetch调用API,该 API 返回一个promise对象,我们使用catch块优雅地处理 API 失败。...fetch调用API,该API返回一个promise对象, 我们使用try..catch块优雅地处理API失败。
类似CodePen的平台看似聚焦代码编辑与效果预览,实则其技术内核隐藏着两大关键挑战:如何通过iframe沙箱构建绝对安全的代码运行环境,杜绝用户代码对宿主系统的渗透;如何在严格隔离的前提下,实现宿主与沙箱间低延迟...CSP可限制沙箱内代码的资源加载来源,例如仅允许从官方CDN加载脚本与样式,禁止内联脚本执行(除非通过nonce或hash验证),即使沙箱属性被意外绕过,CSP仍能拦截恶意资源加载与脚本执行,形成“双重防护...postMessage API允许任何页面向iframe发送消息,若不做身份校验,恶意页面可能向沙箱发送伪造的“代码执行”指令,或窃取沙箱返回的运行结果。...(仅允许白名单内的API);二是资源占用监控,通过requestIdleCallback监测沙箱的CPU使用率与内存占用,若短时间内CPU使用率持续超过90%,或内存占用激增,立即终止代码执行,并向宿主发送警告消息...资源加载优化直接影响首屏加载速度,沙箱需加载的资源包括iframe框架、编辑器组件、语法高亮库、第三方依赖等,若加载顺序不合理或未做压缩,会导致首屏时间过长。
Chrome DevTools 为调试内存问题提供了强大的工具--只要你知道如何有效地使用它们。...一些常见的来源包括: 在DOM分离时忘记移除事件侦听器 在闭包中无意中捕获对DOM元素的引用 增长的数据结构,如 map 或数组,不进行清理 未能正确关闭 Web Workers 父 iframe 和...iframe 上下文之间的残留引用 闭包和意外的引用是一个常见的原因。...但即使修复小的泄漏也可以提高性能。 在典型的用户流程中分析内存使用情况有助于识别渐进的泄漏来源。DevTools、fuite和其他工具可以定位增长的对象。修复泄漏可能需要重新设计一些逻辑。...力争实现相对平坦的内存使用情况,而不是呈锯齿形状的模式,显示在重置之间的渐进积累。如果在长时间的会话中累积,即使小于1MB的泄漏也可能值得修复。
iFrame。...对于定位特定用户或设备非常有用… 18.iFrame CSRF令牌盗窃 通过嵌套的iFrames窃取CSRF令牌。...第一个iFrame获取CSRF保护的页面,在第一个表单的“token”参数中窃取标记值,并创建第二个iFrame,并与相应的标记进行连接。...25.内联 实现可移植内联HTML5 web worker定义的通用脚本。调用外部脚本不再是必需的,这使得这种类型的攻击更容易执行(并且难以检测到……)。...40.振动 关于如何在Android手机上使用振动API以及可以完成的一些恶意用法的例子。
需要登录时,将跳到SSO系统,SSO系统完成登录,其他的应用系统也就随之登录了 举个例子 淘宝、天猫都属于阿里旗下,当用户登录淘宝后,再打开天猫,系统便自动帮用户登录了天猫,这种现象就属于单点登录 二、如何实现..."; document.body.append(iframe); // 使用postMessage()方法将token传递给iframe setTimeout(function () { iframe.contentWindow.postMessage...此种实现方式完全由前端控制,几乎不需要后端参与,同样支持跨域 三、流程 单点登录的流程图如下所示: 用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数 sso...(系统1) 系统1拿到令牌,去sso认证中心校验令牌是否有效 sso认证中心校验令牌,返回有效,注册系统1 系统1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源 用户访问系统2的受保护资源 系统...2发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数 sso认证中心发现用户已登录,跳转回系统2的地址,并附上令牌 系统2拿到令牌,去sso认证中心校验令牌是否有效 sso认证中心校验令牌,返回有效