Architecture 电子架构中的应用程序不安全?

Architecture 电子架构中的应用程序不安全?,architecture,electron,Architecture,Electron,我是Electron的初学者,对HTML/javascript和Windows桌面应用程序开发(win forms和WPF)有丰富的经验。我非常喜欢js/HTML5,希望有一天有人能提出一个框架,让我可以编写js/HTML5来创建桌面应用程序。现在电子在这里 从我所读到的内容来看,Atom是一款使用电子框架制作的很棒的产品。我听说它很好,因为它是可以破解的。好啊没问题! 这是否意味着使用Electron framework制作的桌面应用程序是不安全的,任何人都可以对其进行解码并对我的应用程序的用

我是Electron的初学者,对HTML/javascript和Windows桌面应用程序开发(win forms和WPF)有丰富的经验。我非常喜欢js/HTML5,希望有一天有人能提出一个框架,让我可以编写js/HTML5来创建桌面应用程序。现在电子在这里

从我所读到的内容来看,Atom是一款使用电子框架制作的很棒的产品。我听说它很好,因为它是可以破解的。好啊没问题! 这是否意味着使用Electron framework制作的桌面应用程序是不安全的,任何人都可以对其进行解码并对我的应用程序的用户使用它

我问这个问题是因为我将开始开发一个桌面应用程序,并考虑使用Electron进行开发


此外,应用程序的打包将在所有三个平台上运行?iOS、Win和Linux?我知道我必须处理我导入的模块,这些模块可以是特定于平台的(例如“自动更新程序”)

电子应用程序的安全性不亚于个人计算机上托管的任何其他应用程序。如果一个邪恶的个人能够访问你的计算机,那么你的应用程序是否在电子、WPF或任何其他技术中都无关紧要。他们可以找到一种方法来对用户使用应用程序。此外,大多数代码都可以进行反向工程并利用漏洞。我想你不必为此担心。如果是像GitHub(是谁制造的)、微软和Slack这样不安全的公司会避免这种情况

这就是说,如果您想试图对用户隐藏信息,源代码就更容易查看,因为它不是二进制形式。例如,您可以进入构建在Electron上的Visual Studio代码的应用程序文件夹,查看/操作源代码。我不确定许可证是否允许,但你可以做到。有一些方法可以缓解这种情况。您可以混淆JavaScript并将其放入ASAR中


我不确定我是否完全理解你的最后一个问题。Electron确实在Windows、Mac(OSX而非iOS)和Linux上运行。如果您有正确的模块,则可以下载一个包并在这三个模块上执行。至于安装,Squirrel似乎是一个流行的选择。你需要为每个平台做按摩。查看VisualStudio代码在每个平台上是如何做到这一点的,我建议您也这样做。

如果应用程序对信息敏感,或者是企业应用程序,请在另一个“传统”框架中执行。在Electron中,你可以获得源代码,修改它,甚至只需很小的努力就可以重新打包它,因为普通的JS文件对任何使用该应用程序的人都是可用的。我知道大多数人都说“你可以把它弄糊涂”,但是有很多在线工具可以“美化”代码并得到完全相同的东西。此外,一些“模糊处理程序”实际上会破坏代码。

安全性是相对的。没有什么是完全安全的。安全性的想法是让你很难突破你的安全性,希望它不值得花费时间和精力。这取决于恶意用户的动机,这通常取决于正在处理或存储的信息类型或正在执行的服务。你可以把它比作把门锁在你的前门上。大多数锁都不是很安全,因为受过挑选/绕过它们训练的人通常很容易做到这一点。但它们阻止了普通人仅仅出于偶然的诱惑或好奇而选择打开你的门

如果您正在制作的应用程序的本质是需要尽可能安全,那么在我看来,Electron并不是您的最佳选择。人们可以直接查看您的代码。即使它是模糊的,仍然会留下javascript代码,正如@Cenebyte321所指出的,它可以在某种程度上“美化”。尽管经过适当模糊处理的代码的美化版本就其所呈现的概念而言不是干净的或可读的代码。它不会是任何接近原始的东西。否则,您可以只使用任何工作代码,并通过在其上运行美化程序使其可读性和组织性良好。很高兴认识到,从技术上讲,您可以将任何可执行文件反编译回源代码。即使是用C编写的二进制程序也可以转换回C代码。在这种情况下,生成的“模糊化”代码可能更加模糊,因此有一些优势。但是,它仍然可以反编译,并且应该是有效的C代码

一旦恶意代码出现在系统上,就很难防范它。更重要的是确保应用程序与之通信的任何服务器都是安全的(同样,在相对意义上)并且它们的API是安全的。它应该足够安全,如果有人查看你的应用程序的源代码,并找出你的服务器的API是如何工作的,这对你来说是没有问题的。任何与服务器的敏感通信都应加密。您不希望在源代码中挂起一些管理员用户名和密码。但你不希望任何应用程序使用任何语言编写

理想情况下,保存在用户计算机上的任何密码在保存之前都应该进行某种方式的转换(可能以多种方式进行腌制和散列,或是酷酷的孩子们现在正在做的任何事情),这样,如果有人获得了对该数据的访问权,他们只能看到该数据的修改版本。如果这项工作做得好,就不应该有解密密码的方法,尽管人们可以使用一些技术来尝试生成一个会导致相同哈希的密码。您只应将正常输入密码的更改版本与实际密码的保存更改版本进行比较。安全存储密码和安全API以及与服务器通信的原则并不特定于Electron,您使用的任何语言或框架都需要同样谨慎的考虑