【问题标题】:ElectronJS code protection 2018ElectronJS 代码保护 2018
【发布时间】:2018-10-06 13:47:26
【问题描述】:

我即将开始创建基于 Windows 的实用程序应用程序来管理本地化 expressjs 服务器,该服务器将利用基于图形的 Windows 应用程序来管理此服务的某些功能

然而,在我开始之前,我想与社区交谈以尝试获得一些建议关于如何正确保护代码的建议,因为这将是节点 JS 蜜蜂我需要确保它受到保护以及我的一些初步阅读在线似乎表明使用电子不是最安全的,有人说你们是如何处理这个以保持节点 JS 这些代码受电子保护的,在我的情况下是在 Windows 环境中

非常感谢任何建议

【问题讨论】:

  • 请原谅我用手机打错了
  • 应该是stackoverflow.com/questions/39233588/…的欺骗。 2018 不会改变很多事情。一旦你在客户端发送代码,无论你做什么,它都是可读的。
  • 我确实给了你一个遮阳篷,供那些将通过谷歌登陆这里的人使用。但一般来说,这类问题最好放在电子论坛和松弛频道上。 stackoverflow 上的帮助文件让您了解原因;)stackoverflow.com/help/how-to-ask

标签: node.js express electron obfuscation


【解决方案1】:

tl;dr 你可以,但不值得努力。只需将您的源代码打包到一个asar 文件中,它就可以让大多数人远离它。

长答案:

  • 在构建应用时使用asar 选项。
  • 使用 uglifier 混淆代码。
  • 使用 WASM
  • 语言绑定从编译格式中获取数据
    • Rust 的 neonjs
    • 用于 C# 的 edge-js
    • N-API,用于 C/C++ 的 NAN

否则,您的文件是脚本,所有这些步骤只会减慢攻击者的速度(许多防御策略),但不会阻止他们访问它们。 devTools 相当容易打开,人们将能够以某种方式、形状或形式阅读代码。如果有人得到了你的混淆代码,很容易重建正在发生的事情(参见此处以供参考:https://www.youtube.com/watch?v=y6Uzinz3DRU

如果你想保护自己免受代码操纵,有更好的方法来做到这一点,比如散列、上下文隔离等。Electron 有一整章讨论这个问题。

https://github.com/electron/electron/blob/master/docs/tutorial/security.md

小幅更新(2020 年):

几周前我看到了这个库,并认为它会展示一种很好的方式来进一步混淆代码以防止被外部各方阅读

https://github.com/OsamaAbbas/bytenode

基本思想是将JS编译成V8的字节码。这对 Electron 非常有效,而且绝对不是每个人都能克服的障碍。 但是,这不会保护您的代码不被转回可读的 JS。这只是增加难度的另一层保护。

【讨论】:

  • 嗨,汉斯,非常感谢这篇文章。我很欣赏这些澄清。我也非常喜欢您发送的 YouTube 视频。很高兴看到他如何深入到 Chromium 层来查看与 js 引擎交互的实际 DOM 事件。
  • @hans Koch 所以我想将源地图运送到生产环境会适得其反吧?
  • @Amida 仅当您想“保护”脚本时。但我个人不会在浏览器或电子中包含任何生产意味着产品的源映射。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-31
  • 1970-01-01
相关资源
最近更新 更多