我正在使用 Node 的 childProcess
制作一个可以在第三方照片编辑器中打开提供的文件的 Electron 应用程序的原型(prototype)。接口(interface):
const process = childProcess.spawn(
'open',
['-a', 'Polarr Photo Editor', filename],
{shell: false}
);
我有点担心传入未经 sanitizer 的
filename
的安全性。作为参数。对于上下文,以下是应用程序的工作方式:我担心第 1 阶段的 MITM 攻击可能意味着用户下载了一个恶意命名的文件,这个文件名在作为参数传递给
spawn
时会做坏事。 ,例如myCoolFile && doEvilThing ;.jpg
.我做了一些测试,还没有发现任何明显的漏洞,但我担心我可能会遗漏一些东西。
因此我想知道:
spawn
劫持命令,产生邪恶的副作用 - 在恶意用户手中做任何意外或不受欢迎的事情? 最佳答案
我不认为这是一个安全问题。有两个原因
第一个是文件名只是发送给第三方应用程序的参数。所以该可执行文件应该验证参数以检查它是否是一个文件。如果不是,则超出您的范围,您可能必须要求他们修复该问题,或者验证它是否为文件名。
第二个原因是这发生在客户端,因此用户将负责传递文件名,即使它是手动完成的。您无法控制他可能在自己的系统上执行的操作,这没关系。即使你让它变得不可能。
您的用户可以随时执行 open -a Polarr Photo Editor anything_he_want
如果他想破解它,就在他的终端上。
关于node.js - 如何安全地从 Electron 打开这个外部应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606415/