首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >电子架构中的应用是不安全的?

电子架构中的应用是不安全的?
EN

Stack Overflow用户
提问于 2015-07-10 08:50:47
回答 4查看 11K关注 0票数 10

我是一个电子初学者,我有丰富的经验,HTML/javascript和窗口桌面应用程序开发( window和WPF)。我非常喜欢js/HTML5 5,以至于我希望有一天有人能拿出一个框架来编写js/HTML5 5来创建桌面应用程序。现在电子在这里。

据我所读,Atom是一个非常棒的产品,使用电子框架。我听说它很好,因为它很容易被攻克。好的!没问题!这是否意味着使用电子框架制作的桌面应用程序是不安全的,任何人都可以对它进行解码,并对我的应用程序的用户使用它。

我之所以问这个问题,是因为我将开始开发一个桌面应用程序,并考虑将电子作为开发的一个选项。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-10 13:11:51

电子应用程序的安全性不亚于任何人计算机上的任何其他应用程序。如果一个邪恶的个人能够访问您的计算机,那么您的应用程序是否使用电子、WPF或任何其他技术并不重要。他们可以找到一种针对用户使用应用程序的方法。此外,大多数代码可以进行反向工程并利用漏洞进行攻击。我觉得你不用担心这个。如果是像GitHub这样不安全的公司,微软和斯莱克会避免这样做的话。

尽管如此,如果您想要向用户隐藏信息,电子源代码是有点容易查看,因为它不是二进制形式。例如,您可以进入Visual代码的app文件夹,该文件夹构建在电子和查看/操作源代码上。我不确定许可证是否允许,但你能做到。有一些方法可以减轻这种情况。您可以混淆JavaScript并将其放入一个ASAR中。

我不确定我完全理解你的最后一个问题。电子确实运行在Windows、Mac (OSX而不是iOS)和Linux上。假设您有正确的模块,可以下载并执行所有这三个包。至于安装,松鼠似乎是一个受欢迎的选择。你需要为每个平台按摩东西。看看Visual代码是如何为每个平台编写的,我建议您也这样做。

票数 16
EN

Stack Overflow用户

发布于 2015-11-27 06:21:55

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

如果程序的代码编写正确,那么即使黑客能够查看代码,它也应该是安全的。如果这不是真的,所有开放源码软件都将是不安全的,因为其他人可以看到代码。但是,如果您正在开发的应用程序的本质是它需要尽可能的安全,那么您可以超越这个级别,通过尽量避免人们查看代码,从而使其更加安全,以防万一会给他们提供如何利用代码的想法。如果这就是你想要的,那么在我看来,电子并不是你最好的选择。人们可以直接查看您的代码。即使它被混淆了,这仍然留下了JavaScript代码,正如@Cenebyte321 321所指出的,它可以在某种程度上“美化”。虽然美化版本的正确混淆的代码将不是干净或可读的代码,就其提出的概念。它不会是任何接近原始的东西。否则,您可以只使用任何工作代码,并使其可读性和良好的组织,只需运行一个美化。很好地认识到,从技术上讲,您可以将任何可执行文件反编译回源代码。即使是用C编写的二进制程序也可以转换为C代码。在这种情况下,产生的“模糊”代码可能甚至很难理解,因此有一些好处。但是,它仍然可以被解压缩,而且它应该是有效的C代码。为了安全起见,永远不应依赖于隐藏或混淆代码。在最好的情况下,它可以创造一个额外的困难层,超出您的实际安全。或者,使您的代码开放源代码,并邀请人们对您的代码和报告漏洞进行审计也是一个好策略。

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

理想情况下,保存在用户计算机上的任何密码都应该在被保存之前以某种方式进行转换(可能是以多种方式进行腌制和散列,或者现在酷孩子们正在做的任何事情),这样如果有人访问了这些数据,他们只会看到该数据的修改版本。当正确地完成此操作时,不应该有一种解密密码的方法,尽管有些技术可以用来尝试生成一个密码,从而产生相同的散列。您只应将通常输入的密码的更改版本与保存的更改版本的实际密码进行比较。安全存储密码和与服务器进行安全API和通信的原则并不是电子特有的,您使用的任何语言或框架都需要对安全性进行同样的仔细考虑。

为了防止我的话有误导性,我并没有暗示在本地存储用于访问服务器的密码是一种标准做法。理想情况下,用户必须在每个会话中输入这种性质的密码,并且永远不会在本地存储密码。但为了方便起见,有些应用程序允许您在本地存储密码,因此不必每次输入密码。实际上,这取决于这些密码访问的数据有多敏感,以及方便对用户有多重要。一个常见的中间点是不要求用户每次输入他们的密码,但这并不意味着密码实际上是本地存储的。

但是,如果恶意软件在用户的计算机上运行,它可能无论如何都会记录他们的击键,并以这种方式识别用户名和密码。即使是加密的通信也不是万无一失的,因为最终会在其中发现安全漏洞,并开发新的协议。有时,政府或其他人知道的后门是故意设计成一种类型的加密。只是希望其他人还没有发现这些后门,因为它们本质上是加密协议中有意设计的安全漏洞。随着JavaScript工具变得更加先进,混淆的JavaScript代码可能与混淆的C代码一样晦涩和混乱,或者已经有一些工具可以实现这一点。

票数 4
EN

Stack Overflow用户

发布于 2015-09-10 20:19:50

我建议,如果应用程序对信息敏感,或者企业应用程序在另一个“传统”框架中这样做。在电子一号中,可以获得源代码,修改它,甚至以极小的努力重新打包它,因为普通的JS文件对任何使用该应用程序的人都是可用的。我知道大多数人都说“你可以混淆它”,但是有很多在线工具可以“美化”代码,并得到一些非常相同的东西。此外,一些“混淆器”设法真正破坏了代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31336402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档