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

sandbox | Electron 安全

0x01 简介 大家好,今天跟大家讨论的内容是 sandbox, sandbox 是一项 Chromium 的功能,它使用操作系统来显著地限制渲染器进程可以访问的内容,在 Electron 中,限制的方面还要包括...沙盒进程可以自由使用的唯一资源是 CPU 周期和内存。例如,沙盒进程无法写入磁盘或显示自己的窗口。他们究竟能做什么是由一个明确的策略控制的。 Chromium 渲染器是沙盒进程。...从广义讲,代理是沙盒进程活动的特权控制者/监督者。...脚本来说,它属于是渲染进程的一部分,但沙盒化后仍然可以使用部分 Node.js 的 API ,毕竟它要负责渲染器进程和主进程之间的通信, Electron 官方给 Preload 脚本提供了一个 require...win = new BrowserWindow() win.loadURL('https://google.com') }) 虽然沙盒限制比较强大,但是 Electron 官方还是强调了,尽量不要在沙盒中渲染不受信任的内容

17110

Electron 9.0.0发布!带来三项重大改进,不再支持Electron 6

开发者可以在 npm 使用 npm install electro@latest 命令安装,或从 Electron 的发行网站下载: https://electronjs.org/releases/stable...Linux 的窗口事件处理程序效率提升。#23260。 新增 PDF 查看器。#22131。...关于新功能和更改的完整列表,请参见 9.0.0 发行说明: https://github.com/electron/electron/releases/tag/v9.0.0 重大改进 使用 remote...#22336 这是一项持续性工作,针对未来的一个需求,即渲染器进程中加载的原生 Node 模块应为 N-API 或 Context Aware 之一。...breaking-changes.md 将 contextIsolation 的默认值从 false 更改为 true(从 Electron 10 开始) 如果没有 contextIsolation,在渲染器进程中运行的任何代码都可以很容易地进入

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

nodeIntegration | Electron安全

0x00 提醒 一篇Electron 安全与你我息息相关文章非常的长,虽然提供了 PDF 版本,但还是导致很多人仅仅是点开看了一下,完读率大概 7.95% 左右,但一篇真的是我觉得很重要的一篇,对大家了解...官方的解释是: 是否启用Node integration 官方在安全建议中是这样描述的 加载远程内容时,不论使用的是哪一种渲染器(BrowserWindow,BrowserView 或者 webview...这个描述似乎在说,开启了 nodeIntegration 之后,渲染进程就可以获取到 NodeJS 的能力,这样渲染进程可以直接使用系统相关的方法,进而达到命令执行的效果 官方眼中的渲染器到底具体是什么呢...否可以执行 NodeJS 预加载脚本 是 渲染页面 是 iframe 否 iframe + window.open 是 0x04 Electron 5.0 Electron 5.0 在 Linux 无法使用...,进而决定使用该程序时的注意事项以及要不要继续使用,当然更好的是向开发者提出建议,采用更安全的开发方式 0x10 PDF 版本&Github PDF 版本下载地址 https://pan.baidu.com

30310

浅谈electron

官网: https://www.electronjs.org/ 使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序 Electron相当于一个浏览器的外壳,可以把网页程序嵌入到壳里面...并且创建窗口等所有系统事件都要在进程中进行。 由于 main 进程本质是一个完整的 node 环境,所以除了以下两个文件之外,并没有什么初始的项目结构。...渲染进程 由于 Electron 使用 Chromium 显示网页,那么,Chromium 的多进程架构也被使用。...Electron 中的每个网页都在自己的进程中运行,称为渲染器进程 (renderer process)。 在正常的浏览器中,网页通常运行在沙盒封装化的环境中,并且不允许访问本机资源。...这使你可以读取和写入本地系统的文件。为了避免 Chromium 的限制以及对应用程序内部文件的改写,请确保使用 electron 的 API,特别是 app.getPath(name) 函数。

2.1K20

electron桌面端Dooring搭建实战

在架构非常类似于一个现代的网页浏览器。...我们可以控制两种类型的进程:主进程渲染器。 每个 Electron 应用都有一个单一的主进程,作为应用程序入口。主进程在 Node 环境中运行,我们可以使用所有 Node 的能力。...那么主进程中我们可以做些什么呢? 主进程的主要目的是使用 BrowserWindow 模块创建和管理应用程序窗口。...BrowserWindow 类的每个实例创建一个应用程序窗口,且在单独的渲染器进程中加载一个网页。我们可从主进程用 window 的 webContent 对象与网页内容进行交互。...有了以上基础, 我画了一张dooring-electron 的简单架构图方便大家理解: 如果相对electron有更多直观理解的, 也可以参考其官网: https://www.electronjs.org

1K50

从零使用electron搭建桌面端Dooring

在架构非常类似于一个现代的网页浏览器。...我们可以控制两种类型的进程:主进程渲染器。 每个 Electron 应用都有一个单一的主进程,作为应用程序入口。主进程在 Node 环境中运行,我们可以使用所有 Node 的能力。...那么主进程中我们可以做些什么呢? 主进程的主要目的是使用 BrowserWindow 模块创建和管理应用程序窗口。...BrowserWindow 类的每个实例创建一个应用程序窗口,且在单独的渲染器进程中加载一个网页。我们可从主进程用 window 的 webContent 对象与网页内容进行交互。...有了以上基础, 我画了一张dooring-electron 的简单架构图方便大家理解: 如果相对electron有更多直观理解的, 也可以参考其官网: https://www.electronjs.org

1.5K30

在 Linux 使用 jps 命令检查 Java 进程

image.png 系统运行着诸多进程,通过 jps 命令能够快速有效识别 Java 进程。 在 Linux 中,有一些用于查看系统运行进程的命令。进程是指由内核管理的正在进行的事件。...在 Linux 中,可以通过 ps 命令查看进程。这是查看当前系统运行进程最简单的方法。...CMD   4486 pts/0    00:00:00 bash  66930 pts/0    00:00:00 ps 你也可以通过 ps 命令,并配合结果输出管道符进行 grep,从而查看系统运行的...Java 虚拟机进程状态Java Virtual Machine Process Status(jps)工具可以帮你扫描系统所有运行的 Java 虚拟机(JVM)实例。...要想实现与 ps 命令类似的输出,可以使用 -v 选项。这很实用,这与 ps 相比,可以减少你的输入。

2.7K20

python中的进程与线程基本使用()

进程与线程的含义 关于什么是进程和线程,网上有很多说法,个人觉的廖大神说的挺好理解的: 对于操作系统来说,一个任务就是一个进程,多进程就是多个任务。...比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。...在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些“子任务”称为线程(Thread)。 由于每个进程至少要干一件事,所以,一个进程至少有一个线程。...多线程与多进程 多线程 创建多线程很简单,只要多新建几个就可以了,如果更多可以使用循环的方式。 ?...多进程进程和线程一样,多创建几次就可以了。 ? 进程进程如果要创建多个,除了上面的方法或者循环,还有进程池的方法,可以一次批量创建。 ? (全文完) ---- 欢迎转载,转载请注明出处!

1.1K21

Linux 使用Systemd 来进程守护Net应用

Linux 使用Systemd 来进程守护Net应用 Systemd Service 的方式,用于在 Linux 系统管理和运行服务。...几乎所有主流的 Linux 操作系统都使用 Systemd 作为默认的系统和服务管理器,因此在这些系统,您都可以使用相同的方式来管理和运行服务。...当然,不同的操作系统版本和发行版可能会有一些差异,但基本的使用方法是相同的。...进程守护步骤 创建一个 .service 文件在 /etc/systemd/system/ 目录下创建一个名为 myapp.service 的文件,使用文本编辑器打开并添加以下内容: [Unit] Description...status miniapi.service --停止 sudo systemctl stop miniapi.service --禁用 [此命令将停止应用程序的进程并停止服务。

79920

基于electron快速将任意网站打包成跨平台的桌面端软件

Electron在架构非常类似于一个现代的网页浏览器。...我们可以控制两种类型的进程:主进程渲染器。 每个 Electron 应用都有一个单一的主进程,作为应用程序入口。主进程在 Node 环境中运行,我们可以使用所有 Node 的能力。...那么主进程中我们可以做些什么呢? 主进程的主要目的是使用 BrowserWindow 模块创建和管理应用程序窗口。...BrowserWindow 类的每个实例创建一个应用程序窗口,且在单独的渲染器进程中加载一个网页。我们可从主进程用 window 的 webContent 对象与网页内容进行交互。...有了以上基础, 我画了一张dooring-electron 的简单架构图方便大家理解: 想对electron有更多直观理解的, 也可以参考其官网: https://www.electronjs.org/

46210

预加载脚本 | Electron 安全

0x00 提醒 之前的一篇Electron 安全与你我息息相关文章非常的长,虽然提供了 PDF 版本,但还是导致很多人仅仅是点开看了一下,完读率大概 7.95% 左右,但一篇真的是我觉得很重要的一篇...,完成主进程与渲染进程之间的通信,将通信结果传递给另一方才是它实际的意义,通过暴露方法使这种固定的逻辑可以被渲染进程调用 因此预加载脚本在渲染器加载网页之前注入,也就是说预加载脚本中的内容会先一步定义好.../etc/passwd 这种名称,就可能导致任意文件读取漏洞 这种属于是不安全的实现,案例比较极端,但是意思应该表达清楚了,这属于是 Preload 和主进程实现做得不安全,导致问题 2....过度暴露 在上面的例子中,我们使用了 Electron 30.0.0 版本,开启了 sandbox ,使用预加载脚本使用 contextBridge 将 API 暴露给渲染进程,我们将打开文件功能进行了封装...,但是不小心暴露给了渲染进程;函数是给自己写的渲染进程使用的,结果同时暴露给了 iframe 这种嵌入内容等 预加载脚本是一个很好的代码审计的切入点,如果安全配置较为完善,则安全漏洞的利用基本都要通过预加载脚本传递数据

16810

contextIsolation | Electron 安全

进程可以通过 BrowserWindow 创建窗口,即渲染器进程 渲染器进程 每个 Electron 应用都会为每个打开的 BrowserWindow ( 与每个网页嵌入 ) 生成一个单独的渲染器进程...恰如其名,渲染器负责渲染网页内容。所以实际,运行于渲染器进程中的代码是须遵照网页标准的 (至少就目前使用的 Chromium 而言是如此) 。...因此,一个浏览器窗口中的所有的用户界面和应用功能,都应与您在网页开发上使用相同的工具和规范来进行攥写 此外,这也意味着渲染器无权直接访问 require 或其他 Node.js API。...为了在渲染器中直接包含 NPM 模块,您必须使用与在 web 开发时相同的打包工具 (例如 webpack 或 parcel) Preload 脚本 预加载(preload)脚本包含了那些执行于渲染器进程中...因为预加载脚本与浏览器共享同一个全局 Window 接口,并且可以访问 Node.js API,所以它通过在全局 window 中暴露任意 API 来增强渲染器,以便你的网页内容使用

20010

Electron 安全与你我息息相关

渲染进程 每个 Electron 应用都会为每个打开的 BrowserWindow ( 与每个网页嵌入 ) 生成一个单独的渲染器进程。 洽如其名,渲染器负责渲染 网页内容。...所以实际,运行于渲染器进程中的代码是须遵照网页标准的 (至少就目前使用的 Chromium 而言是如此) 。 4....这些脚本虽运行于渲染器的环境中,却因能访问 Node.js API 而拥有了更多的权限,当然,为了安全考虑,它的 API 是受限的,主要就是发起 IPC 请求或监听,将自定义的API和变量等传递给渲染进程使用...remote模块从主进程发送到渲染器进程中的子帧的 IPC 消息在某些情况下可能会传递到错误的帧。...https://www.electronjs.org/zh/docs/latest/tutorial/ipc 这是一个渲染器进程到主进程通信的案例,我们将从渲染器进程打开一个原生的文件对话框,并返回所选文件的路径

84610

electron快速使用(一)

最近用到了electron, 顺便归纳一下,站在巨人的肩膀。...Windows,程序包大WinFormC#性能好,组件丰富,易上手只支持Windows,UI差SwingJava基于AWT,组件丰富性能差,UI一般NW.jsJS跨平台性好,界面美观底层交互差、性能差,包大ElectronJS...这个文件控制 主程序 (main process),它运行在 Node.js 环境里,负责控制应用的生命周期、显示原生界面、执行特殊操作并管理渲染器进程 (renderer processes),稍后会详细介绍...在继续编写 Electron 应用之前,将使用一个小小的脚本来确保主进程入口点已经配置正确。...在根目录的 main.js 文件中写一行代码:main.jsconsole.log(`欢迎来到 Electron `)因为 Electron 的主进程是一个 Node.js 运行时,可以使用 electron

18320

仅仅过去 4 年,微软最终放弃了它!

相比之下,WebView2 在发布方面则提供两个选项:可以直接捆绑应用开发时所使用的特定 WebView2 库,也可以使用系统已经存在的共享运行时版本。...Electron 与 WebView2 都继承了 Chromium 的多进程架构——即由单一主进程同一个或多个渲染器进程通信。...这些进程同系统正在运行的其他应用程序完全分离,每个 Electron 应用程序都拥有一个独立的进程树,其中包含一个根浏览器进程、部分实用程序进程外加一定数量的渲染进程。...与应用套件类似,使用相同用户数据文件夹的各 WebView2 应用程序之间会共享非渲染器进程,但使用不同数据文件夹的 WebView2 应用程序之间则不共享任何进程。...Electron 当中集成有 Node.js,因此 Electron 应用程序可以使用来自渲染器及主进程的任何 Node.js API、模块或者 node-native-addon。

2.6K10

(1 3)Electron知识学习 · 基础篇

Electron是一个跨平台的桌面客户端框架,使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序,文档:https://www.electronjs.org/zh/docs/latest...,当前使用最新稳定版本:20.1.4 特性 我们可以从中了解到他实现的方式以及他的应用场景 我认为他们最大特点就是: 主进程和渲染进程就行隔离(沙箱模式) 当时用户操作和渲染的事情都是交给渲染进程 当需要操作系统...调试和性能分析 在开发时可对其进行调试和性能分析 Windows 安装程序 可以打包成可执行文件,用户的使用体验良好 生命周期 Electron分为主进程和渲染进程 左边是主进程 右边是渲染进程 安装...然后回车 项目基本信息创建完成后 我们可以用vscode来接管开发等工作 首先定位到项目根目录并打开终端 打开package.json这里可以看到我们刚才的项目信息 这里的操作基本上前端框架操作基本没什么区别...Chromium等版本号 这时我们就需要调用相关接口 下面我来演示一下 首先我们我们需要添加一个预加载脚本 我们在根目录添加一个preload.js文件 并添加如下内容 window和 document全局渲染器

95520

Electron 吞噬资源,微软 Teams 为性能改用 WebView2

相比之下,WebView2 在发布方面则提供两个选项:可以直接捆绑应用开发时所使用的特定 WebView2 库,也可以使用系统已经存在的共享运行时版本。...Electron 与 WebView2 都继承了 Chromium 的多进程架构——即由单一主进程同一个或多个渲染器进程通信。...这些进程同系统正在运行的其他应用程序完全分离,每个 Electron 应用程序都拥有一个独立的进程树,其中包含一个根浏览器进程、部分实用程序进程外加一定数量的渲染进程。...与应用套件类似,使用相同用户数据文件夹的各 WebView2 应用程序之间会共享非渲染器进程,但使用不同数据文件夹的 WebView2 应用程序之间则不共享任何进程。...Electron 当中集成有 Node.js,因此 Electron 应用程序可以使用来自渲染器及主进程的任何 Node.js API、模块或者 node-native-addon。

3.4K50
领券