首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

预加载脚本 | Electron 安全

events https://nodejs.org/api/events.html 这个模块是 Node.js 中关于事件处理的模块,是发布、订阅模式的实现,这里允许预加载脚本使用应该是为了让预加载脚本具备事件处理相关的能力...,预加载脚本的职责来看,也确实可能用的 使用案例如下 const { EventEmitter } = require('events'); class MyEmiter extends EventEmitter...是用来向渲染进程暴露变量/常量和函数的方法,在下面的部分详细介绍;ipcRenderer 是 Preload 脚本用来和主进程进行 IPC 通信的工具,我们详细看看剩下几个是干嘛的 crashReporter 崩溃日志提交给远程服务器...过度暴露 在上面的例子中,我们使用Electron 30.0.0 版本,开启了 sandbox ,使用预加载脚本使用 contextBridge API 暴露给渲染进程,我们打开文件功能进行了封装...,但是不小心暴露给了渲染进程;函数是给自己写的渲染进程使用的,结果同时暴露给了 iframe 这种嵌入内容等 预加载脚本是一个很好的代码审计的切入点,如果安全配置较为完善,则安全漏洞的利用基本都要通过预加载脚本传递数据

12210
您找到你想要的搜索结果了吗?
是的
没有找到

nodeIntegration | Electron安全

带着这种疑问,我们开始今天的文章 这篇文章在文末也提供了 PDF 版本 0x02 搭建测试程序 我们根据官方重大更改中提到的两个节点 Electron 5.0 和 Electron 20.0 整个时间线分成四段...测试项 Electron 官方开发了 Electron Fiddle 程序,可以直接选择 Electron 版本,非常方便,但是需要系统准备对应的 NodeJS 环境,代码就使用默认的,我们在其中 "加料...在内网起一个 http 服务器,设置一个恶意的 html 192.168.31.215 <!...服务器 192.168.31.215 在 iframe 中通过 window.open 打开页面进行执行 2.html <!...所以我们需要再次测试了,但这里就不把过程中展示出来了 Electron 6.0.0 开始 sandbox: true 时, Preload 脚本的 NodeJS 环境为受限环境 再此之前即使设置了

21810

electron 配置使用NodeJS API

如果一定要使用,需要修改配置。 配置使用NodeJS API 渲染进程将在一个单独的沙盒环境中运行,无法直接访问 Node.js 的 API。...(fs.readFileSync('./1.txt', 'utf-8')); 使用 remote 模块 remote 模块是 Electron...Electron 9中开始,官方已经计划移除 remote 模块, 并且在Electron 14完成移除,引起目前我们默认情况下已经不能再使用该模块。...> 使用 remote 模块,渲染进程可以通过调用主进程的模块和函数来获取主进程提供的功能,它不仅仅是在渲染进程中可以使用NodeJS API 那么简单,通过它还可以使用在主进程中才能使用的模块。...您必须传递enableRemoteModule配置项: { webPreferences: { enableRemoteModule: true } } 使用@electron/remote会使沙箱的效率大大降低

24210

如何在Ubuntu 14.04上使用Transporter转换后的数据MongoDB同步Elasticsearch

本教程向您展示如何使用开源实用程序Transporter通过自定义转换数据MongoDB快速复制Elasticsearch。...目标 在本文中,我们介绍如何使用Transporter实用程序数据MongoDB复制Ubuntu 14.04上的Elasticsearch 。...现在,我们需要在MongoDB中使用一些我们要同步Elasticsearch的测试数据。...在数据MongoDB同步Elasticsearch时,您可以在这里看到转换数据的真正力量。 假设我们希望存储在Elasticsearch中的文档有另一个名叫fullName的字段。...结论 现在我们知道如何使用Transporter数据MongoDB复制Elasticsearch,以及如何在同步时转换应用于我们的数据。您可以以相同的方式应用更复杂的转换。

5.4K01

快速了解Electron:新一代基于Web的跨平台桌面技术

桌面应用程序 GUI 程序GUI 具体为“桌面”,使冷冰冰的像块木头一样的电脑概念更具有 人性化,更生动和富有活力。...2)可以 NodeJS 的生态获得极大的助力: 因为 Electron 是基于 NodeJS 的,意味着,NodeJS 这个大生态下的模块,Electron 也都可以用,这减少了很多造轮子的时间,你要写一些逻辑首先思考有没有成熟的模块可以引入...NodeJS环境:这可能是很多前端开发者曾经梦想过的功能,在WEB界面中使用Node.js提供的强大API,这意味着你在WEB页面直接可以操作文件,调用系统API,甚至操作数据库。...项目迁移:如果要迁移项目Web端,就需要把项目中的Electron提供的API和NodeJS的API完全剥离出来,只能遗留Web的代码,比如 node fs模块,Electron提供ipc 模块,都需要剥离...有关SSE的详细介绍文章请参见: 《SSE技术详解:一种全新的HTML5服务器推送事件技术》 更多WEB即时通讯文章请见: http://www.52im.net/forum.php?

4.4K40

快速了解Electron:新一代基于Web的跨平台桌面技术

桌面应用程序 GUI 程序GUI 具体为“桌面”,使冷冰冰的像块木头一样的电脑概念更具有 人性化,更生动和富有活力。...2)可以 NodeJS 的生态获得极大的助力: 因为 Electron 是基于 NodeJS 的,意味着,NodeJS 这个大生态下的模块,Electron 也都可以用,这减少了很多造轮子的时间,你要写一些逻辑首先思考有没有成熟的模块可以引入...NodeJS环境:这可能是很多前端开发者曾经梦想过的功能,在WEB界面中使用Node.js提供的强大API,这意味着你在WEB页面直接可以操作文件,调用系统API,甚至操作数据库。...项目迁移:如果要迁移项目Web端,就需要把项目中的Electron提供的API和NodeJS的API完全剥离出来,只能遗留Web的代码,比如 node fs模块,Electron提供ipc 模块,都需要剥离...有关SSE的详细介绍文章请参见: 《SSE技术详解:一种全新的HTML5服务器推送事件技术》 更多WEB即时通讯文章请见: http://www.52im.net/forum.php?

4.1K20

基于ElectronEgg&Python,从零开始打造一款免费的PDF桌面工具

使用Python实现功能之后,然后通过 nuitka Python 文件打包成一个可执行文件,通过 ElectronEgg 进行调用。...前端ElectronEgg 前端GUI页面主要使用 Electron + Vue3 实现,前端和后端的通信主要使用 Node 中的 child_process 实现, 前端页面的通信使用 IPC 实现。...主要使用技术有: • nodejselectron • vue • vue-router • pinia • naiveui • python • pymupdf • nuitkia 打包工具 IPC...消息主进程发送到渲染器进程时,消息需要通过其 WebContents 实例发送到渲染器进程。...electron-updater,主要的逻辑代码,在打包的配置文件中设置自己的更新服务器,打包之后的文件放在自己的服务器中。

43610

Fuse | Electron 安全

此环境变量可用于各种自定义选项传递Node.js运行时,并且通常不被生产中的应用程序使用。...此功能旨在性能影响降至最低,但可能会略微降低 app.asar 存档中读取文件的速度 Disabled onlyLoadAppFromAsar onlyLoadAppFromAsar 改变了Electron...模块时使用 BoringSSL 而不是 OpenSSL cli 选项可以参考 https://nodejs.org/api/cli.html 现在我编译一个 runAsNode 为 Enabled 的程序.../api/cli.html#node_optionsoptions https://github.com/nodejs/node/blob/main/doc/api/cli.md#node_extra_ca_certsfile...,所以默认开启;在 Electron Forge 中也没有对其进行额外设置,这是合理的,毕竟不是所有开发者都会去自定义协议 我们尝试直接使用 fiddle 进行测试第一项 确实可以获取到数据,而且之前就测试过

10810

Electron 安全与你我息息相关

预加载脚本 主进程可以与操作系统交互,渲染进程只能渲染网页,那么当功能需要操作系统支持的时候,渲染进程如何需求传递给主进程,主进程如何结果传递给渲染进程就是个问题,Electron 设计了一系列的...或使用remote模块主进程发送到渲染器进程中的子帧的 IPC 消息在某些情况下可能会传递错误的帧。...代码拼接,插入网页中,可能造成 XSS 因此这里出现了三个问题都找到了答案 XSS 漏洞 —— 拼接 HTML 导致 渲染进程具备调用 Nodejs API 的能力 —— Electron默认即不安全导致...Web 服务器。...此环境变量可用于各种自定义选项传递Node.js运行时,并且通常不被生产中的应用程序使用

68710

Electron截图实现的思路

Electron上截图的实现方案 方案1 使用Electron提供的API 新建一个BrowserWindow; 在窗口加载完成,调用desktopCapturer获取缩略图 在窗口绘制两个canvas...}); }, 这种方案的效率还是偏低,在分辨率较高的电脑上能明显感受到延迟 方案2 调用系统方法 Windows截图 官网http://www.nirsoft.net/utils/nircmd.html...这种方法还可以细分成三种: 调用native代码编译的.node文件 通过node-ffi、edge-atom-shell等模块,在nodejs中直接写C++代码调用dll electron作为跨平台PC...electron提供了nodejs调用原生模块的解决方案:使用Node原生模块 配置好node-gyp的环境后,c++代码暴露出供node调用的接口,修改biding.gyp。...image.isEmpty()) { // 传给UI层处理 } }) exe和dll文件打包app.asar.unpacked目录下,通过绝对路径去执行。

3.6K10

「 工具篇 」VS Code

在语言上,VSCode 使用HTML,CSS,TypeScript 进行开发,使用 Electron 作为构建工具。...兼容 TextMate 的代码着色分析 可以简单的 TextMate 的语言着色配置文件拷贝插件中,并在 package.json 中指定即可。...插件可以使用所有的 NodeJS API,配合各种 NodeJS 库,能够完成非常有想象力的功能。 扩展菜单 VSC 提供了文件管理器菜单,编辑器菜单,文件标题菜单扩展点。...Git 提交历史记录 在使用git的时候,经常需要查看修改记录,或者需要查看谁提交了什么文件等,当然可以存放git代码的目录查看,但这样很不方便,如果使用vscode编辑工具写的话,可以安装一个 git...需要你等半天页面服务器发送过来,这肯定是不能和本地访问相媲美的。

2.9K30

初探Electron入门实践

Electron的内置功能包括: · 自动更新 - 使应用程序能够自动更新、升级 · 本机菜单和通知 - 创建本机应用程序菜单和上下文菜单 · 应用程序崩溃报告 - 您可以崩溃报告提交给远程服务器...Electronnodejs巧妙的融合了进来,让nodejs作为整个程序的管家。管家拥有较高的权限,可以访问和操作本地资源,使用原本在浏览器中不提供的高级API。...为了保持进程通信,Electron有一个进程间通信系统(IPC也就是内部进程通信)。您可以使用IPC在主进程和渲染进程之间传递信息。...说句题外话:在两个网页(渲染进程)间共享数据最简单的方法是使用浏览器中已经实现的 HTML5 API。...至此,初探Electron入门实践教程结束,如果大家还有更多使用上的疑惑或想要了解更多高级用法,可以通过官方文档学习https://electronjs.org/docs。

2.5K20

electron 进程间通信

预加载脚本(preload) Electron 不推荐在渲染进程开启Nodejs 环境,那也就意味着我们无法在渲染进程中使用NodeJS API,但有时候我们又真的很需要使用NodeJS API。... Electron 20 开始,预加载脚本默认 沙盒化 ,不再拥有完整 Node.js 环境的访问权,实际上,这意味着我们只拥有一个 require 函数,这个函数只能访问一组有限的 API。...下面写个示例体验一下: 创建一个预加载脚本 p1.js,我们可以在里面编写我们的代码,此脚本中可以使用Nodejs API。...由于渲染进程中默认无法使用NodeJS API,也就无法使用 require 导入模块,所以我们需要将 ipcRenderer 模块的相关内容在预处理脚本中暴露,才能在渲染进程中使用。...> 主进程向渲染进程通信(单向) 消息主进程发送到渲染进程时,需要指定是哪一个渲染进程接收消息。

9510

跨平台桌面开发,Electron还是WebView2 (上篇)

而借助于NodeJS的能力,你可以和原生操作系统打交道,比如读取文件,读取数据库等,只要NodeJS能做到的,Electron都可以。...举例说明,我2020做的那个应用,就使用了SQLite数据库,所有聊天数据都是存在本地的,本地读取。有需要才网络加载。 这几乎已经和普通的原生开发的实现理念一模一样的,对吧。...对于网页处理数据而言,一个基本的原则是: 所有数据每次都是服务器全量加载 对吧,除非极个别的,比如登陆信息,或者一些cookies会浏览器取,其它内容几乎每次访问网页都是全量服务器取。...客户端应用数据处理的基本原则是: 必要数据尽可能存储本地(文件或SQLITE数据库),有需要才增量拉取新的数据 所以,我认为选用Electron做开发的,因为大多属于前端技术人员,特别需要对这个原则有所了解...Electron是完全可以读写本地文件,还可以使用SQLITE数据库等的。 Electron的缺点 当然,Electron肯定是有缺点的。

3.7K30

Electron快速入门,聊聊跨进程通信那些事儿

这便是桌面应用的需求造就了 Electron 的到来。 什么是Electron? 简介 打开官网,我们便可以看到其介绍,使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序。...渲染页面 使用部分 Electron 模块 API 使用 NodeJS 特性 一个应用可存在多个渲染进程 控制用户交互逻辑 访问 Dom API 核心模块归属情况 上图为笔者整理的常用模块归属情况,详细主进程...有个小注意事项⚠️需要关注一下: 进程之间的通信过程中,发送的json对象都会被序列化和反序列化,所以传递的时候需要注意其方法和原型链上的数据是不会被传递的。...这一点,跟小程序 setData 进行视图层和逻辑层数据传输是十分类似的,evaluteJavascript 所实现的,最终都转化为字符串传递。...无跨域问题 支持 Node.js 参考 electron官网 《Electron实战(入门、进阶与性能优化)》 掘金小册 - 《Electron + React 0 1 实现简历平台实战》

1.6K20
领券