Electron-Node安全性问题之一

摘要:
是否要禁用节点。js集成?正在禁用节点。js集成有助于防止XSS攻击升级到“当Node.js集成被禁用时,预加载脚本仍然可以使用Node.js功能,如require。//是否完全支持Node。默认值为trueNodeIntegrationInWorker://Whether在Web工作程序中启用节点集成预加载:

上次开会项目开会提到了使用electron安全性的问题:

是否要禁用Node.js集成?是目前所要考虑的问题。

跨站脚本(XSS)攻击很常见,攻击者跳过渲染进程并在用户电脑上执行恶意代码,危害是非常大的。禁用Node.js集成有助于防止XSS攻击升级为“远程代码执行”(RCE)攻击。

怎么解决Node.js集成的问题?

当禁用Node.js集成时,你可以暴露API给你的站点,以使用Node.js的模块功能或特性。预加载脚本依然可以使用require等Node.js特性,以使开发者可以暴露自定义API给远程加载内容。

const mainWindow = new BrowserWindow({
  webPreferences: {   //网页功能的设置
    nodeIntegration: false, //是否完整的支持 node. 默认值为true
    nodeIntegrationInWorker: false,// 是否在Web工作器中启用了Node集成
    preload: './preload.js' //在页面运行其他脚本之前预先加载指定的脚本 无论页面是否集成Node, 此脚本都可以访问所有Node API 脚本路径为文件的绝对路径
  }
})

 

下面结合新零售业务,对于node – serialport怎么处理的?

Electron主进程:
mainWindow = new BrowserWindow({
     800, 
    height: 600,
    webPreferences: {
        nodeIntegration: false,
     nodeIntegrationInWorker: false
        preload: path.join(__dirname, 'preload.js')
    }
})
暴露API给站点(preload.js):
const serialport = require('serialport');
let nav = {	
	serialport:serialport
}
global.nav = nav;
站点(web业务)要使用的:
     const contr = document.getElementById('port')
	const serialport = window.nav.serialport;
	if(!serialport) return;
        serialport.list((err, ports) => {
             for (let item of ports) {
		     var div = document.createElement('div')
		     div.innerHTML = item.comName
                     contr.appendChild(div)
             }
             console.log(ports);
       }); 

  

在项目中遇到的具体问题就是如此,这里做下项目总结。后续会持续记录。

免责声明:文章转载自《Electron-Node安全性问题之一》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇常用快捷键大全SQL Server dbcc checkdb 做了什么。下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java生鲜电商平台-提现模块的设计与架构

Java生鲜电商平台-提现模块的设计与架构 补充说明:生鲜电商平台-提现模块的设计与架构,提现功能指的卖家把在平台挣的钱提现到自己的支付宝或者银行卡的一个过程。 功能相对而言不算复杂,有以下几个功能需要处理。 业务逻辑如下;                        1. 卖家登陆自己的B2B系统提交提现功能。                    ...

[Matlab] 短时傅里叶变换spectrogram函数

Matlab 文档:https://ww2.mathworks.cn/help/signal/ref/spectrogram.html#bultmx7-x 调用:[~,f,t,ps] = spectrogram(data,opt.window,opt.noverlap,freqRange(1):freqRange(2),sample_freq,'reass...

mysql 函数 存储过程 事件(event) job 模板

mysql的编程能力比sqlserver和mysql弱很多,万不得已尽量将这些东西转移到应用层。 but,有时候小项目或项目刚开始尝试阶段,需要降低服务器成本,压缩项目规模。期初业务需求不清晰,也比较简单,为了快速成型也可以先凑合着用。 创建函数模板: -- ---------------------------- -- Function structur...

zabbix 安装(离线源码安装)

1、LAMP 环境搭建   1.1 、安装 apache   安装 pcre tar -zxvf pcre-8.41.tar.gz cd pcre-8.41 ./configure --prefix=/home/pcre make make install 安装 apr tar -zxvf apr-1.6.5.tar.gz cd apr-1.6.5 ....

数据可视化之DAX篇(二十八)Power BI时间序列分析用到的度量值,一次全给你

https://zhuanlan.zhihu.com/p/88528732 在各种经营分析报告中,我们常常会看到YTD,YOY这样的统计指标,这样的数据计算并不难,尤其是在PowerBI中,因为有时间智能函数的帮助,大大简化了这些计算,从而快速满足定期的报告需求。 下面就给你列出这些常用统计数据的度量值,帮你快速掌握各种期间数据的算法。   如果对时间智能...

python:将excel转换xml(testlink)

最近公司内部开始推行使用testlink,打算使用excel编写转换为xml,自行上传,但是最终转换出来的文件还是不能被testlink所识别 最终解决方案:使用testlink convert进行相应的转换操作。 此处仅提供excel转xml的思路:使用xlrd读取excel并存为字典,再从字典解析成xml(一个是用xmldom解析,一种是通过拼接字符串...