当前位置: 首页 > news >正文

商务网站建设与维护(专21春)网站页尾版权

商务网站建设与维护(专21春),网站页尾版权,网站提示域名解析错误怎么办,前端机构培训背景: electron大家平时为了方便使用,或是一些网上demo的引导,会让渲染进程的业务界面支持直接使用nodejs,这种开发方式有一定的安全隐患,如果业务界面因为xss之类的漏洞被注入其他代码,危害非常大&#x…

背景:

electron大家平时为了方便使用,或是一些网上demo的引导,会让渲染进程的业务界面支持直接使用nodejs,这种开发方式有一定的安全隐患,如果业务界面因为xss之类的漏洞被注入其他代码,危害非常大,属于最高等级的安全问题。那么怎样更好的避免发生这种问题呢?

一.禁止渲染进程页面直接使用nodejs,webPreferences这么配置

win = new BrowserWindow({webPreferences: {preload:"./preload.js",// Warning: Enable nodeIntegration and disable contextIsolation is not secure in production// Consider using contextBridge.exposeInMainWorld// Read more on https://www.electronjs.org/docs/latest/tutorial/context-isolationnodeIntegration: true,//webviewTag: true,contextIsolation: true,//隔离},});

二.通过preload配置,暴露允许使用调用的接口,preload配置的配置方式如上代码,内容如下例子:

import { contextBridge, ipcRenderer } from 'electron'contextBridge.exposeInMainWorld('electronAPI', {openFile: () => ipcRenderer.invoke('dialog:openFile')
})

在渲染进程界面采用window.electronAPI.openFile()方式调用,为了让渲染进程足够安全,建议设计这里的接口尽量做到仅暴露必要函数和参数,不要直接把诸如electron对象暴露给页面界面,这种事情干多了,这个安全隔离的意义就会逐渐消失。

渲染进程与preload通讯的另外一种方式,通过postmessage,举例

preload.js

window.onmessage = (ev) => {ev.data.payload === "removeLoading" && removeLoading();
};

渲染页js

postMessage({ payload: "removeLoading" }, "*");

这种方式相比第一种更加安全一点(暴露的信息更加隐蔽),但使用起来比较麻烦,可能需要进一步封装

三:其他问答:

1.preload.js在跳转到新地址后还会不会存在?

答:会,每次发生跳转preload.js都会重新加载进来,跟普通加载js一样,所以这个js的变量并非持久化的

2.preload跟主进程通讯方式

方式一:invoke和handle的组合

//preload.js
let a = ipcRenderer.invoke('xxx')//main.js
ipcMain.handle('xxx', async ()=>{
return "123"
})

方式二:on和send的组合

// 在主进程中.
const { ipcMain } = require('electron')
ipcMain.on('asynchronous-message', (event, arg) => {console.log(arg) // prints "ping"event.reply('asynchronous-reply', 'pong')
})ipcMain.on('synchronous-message', (event, arg) => {console.log(arg) // prints "ping"event.returnValue = 'pong'
})
/在渲染器进程 (网页) 中。
const { ipcRenderer } = require('electron')
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong"ipcRenderer.on('asynchronous-reply', (event, arg) => {console.log(arg) // prints "pong"
})
ipcRenderer.send('asynchronous-message', 'ping')

http://www.yayakq.cn/news/533372/

相关文章:

  • 宁波网站建设与推广方案诸城网站建设公司
  • 网站建设-丹东做网站什么好
  • 我国中小企业网站建设泉州市城乡和建设网站
  • 广州住房公积金建设银行预约网站首页郑州安卓app开发
  • 企业公司网站建设公司seo网络营销工程师
  • 重庆网站公司建设建设部网标准下载网站
  • 宁波网站建设团队哪家好自主建站是什么意思
  • 佛山网站建设优化国网
  • 北京网站定制公司网站打不开怎么办
  • 网站链接提交收录wordpress瀑布流代码
  • 国内公司网站模板中区网站建设
  • 网站备案 流程莱芜官网
  • 网站销售流程做网站推广需要什么
  • 杭州网站搭建多少钱notepad wordpress
  • 宣传类网站微信授权登录第三方网站开发
  • 做网站的公司倒闭了做网站必须用对方服务器
  • 双语网站建设佛山公司网站设计团队
  • 网站及新媒体建设办法国外网页加速器
  • 重庆网站制作小米商城的网站建站
  • 公司网站建立wordpress 安装证书
  • python3 网站开发入门在国外服务器上做网站项目如何赚钱吗
  • 网站建设洽谈wordpress高速优化
  • 北京市网站建设公司小红书网络营销策划方案
  • 中石油第七建设公司网站做淘口令网站
  • 专门做商标的网站有哪些wordpress用户无法登录
  • 404过多会不会影响网站排名企业网站用什么做
  • 惠州市住房和城乡规划建设局官方网站域名收录提交
  • 茂南网站开发公司微信网站建设和维护报价表
  • 东莞长安营销型网站建设广西智能网站建设哪家好
  • 网站开发用什么语言像京东一样的网站